06linux別々の読み取りや基本的なサービスを書く-MySQL

1、別読み取りおよび書き込みの概要

MySQLは自由のために、世界で最も広く使用されているデータベースとして、私はシステムエンジニアの運用・保守に携わるすべての人々が連絡しなければならないと考えています。しかし、実際の運用環境では、単一のMySQLは、セキュリティ、高可用性と高い同時実行のあらゆる側面にあるかどうか、スタンドアロン・データベースとしての時間の実際のニーズを満たすことができない存在です。したがって、一般的にマスタ・スレーブモード(マスタスレーブ)同期データによってコピーされ、その後、別リードによって同時負荷能力データベースを促し、実施の形態では、このようなスキームを展開するために、書き込み

2、独立した読み取りおよび書き込み作品

基本的な原理は、主がトランザクションデータベースの追加処理させる変更、削除の操作をすると、データベースクエリ処理操作からです。トランザクション・データベースの複製は、データベースからクラスタへの変更に起因する動作を同期させるために使用されます。

3、別の読み取りおよび書き込みモード:

1)アプリケーション層の実装、ウェブサイトのプログラミング。アプリケーション層は、内部コネクタを参照して、別読み書きに実装サブアプリケーションを実装します

2)中間層を達成するために、中間層が得ミドルウェアプログラムを読み出して外部の分離に書き込むことが意味されます。一般的に使用されるミドルウェア・プログラムは、以下のとおりです。

コバー:アリババのB2Bは、リレーショナル、分散システム管理のボーナス3000 MySQLのインスタンスを開発。アリは試練に耐え、オフによるコバー著者の背後にある理由が維持されていなかった、とアリはまた、代わりにコーバーのTDDLを開発しました。

MyCAT:二次開発に基づいて、コミュニティの愛好家アリコバー、コバーの存在、そしてその中で多くの新機能を追加したいくつかの問題を解決します。現在mycatコミュニティ活動が高く、すでにいくつかの企業がmycatを使用するがあります。全体的に、サポートの比較的高い程度は、常に面積を維持します

oneproxy:データベースコミュニティダニエルは、アリペイの総床チームリーダーデータベースの開発の前に、に基づいて、 MySQLの公式代理cを使用してのアイデアの開発、OneProxyは常にパフォーマンスに焦点を当て、機能の床点のいくつかを切り上げ、商用手数料ミドルウェアですそして、安定性。私の友人は、それが安定して高い同時実行の下でテストされたと述べました。

Vitess:本ミドルウェアは、生産使用でYouTubeのが、アーキテクチャが非常に複雑です。ミドルウェア異なる過去、彼の言語を使用するために、比較的大きな変化Vitessアプリケーションの使用はAPIインターフェースを提供し、我々は彼らの彼のデザインのアイデアの一部から学ぶことができます。

Kingshard:フィリップ・チェンの営業時間とのKingshard元360Atlasミドルウェアの開発チームは、言語の開発を行って、現在約3の開発に携わっがあり、現在の状況はまだ熟していない製品を使用することができ、あなたは絶えず改善する必要があります。

アトラス:C.を書き換える360 LUAチームベースのMySQLのプロキシ オリジナル版は、支持点台であるサブライブラリーサブテーブルのバージョンをリリースしました。ラインでは、多くの場合、使用したい場合は、高い同時実行の下でハング事前にテストする必要があると言うために使用される私の友人の何人かを確認します。

MaxScaleのとMySQLのルート:どちらが正式なミドルウェア・バーとみなされ、 MaxScaleのはmariadb(MySQLは原作者のバージョンを維持する)の研究開発では、現在のバージョンでは、サブライブラリーサブテーブルをサポートしていません。MySQLのルートは現在のMySQL、Oracleはミドルウェアの外に放出公式です。

4、テスト環境の準備

三台のLinux仮想マシンを準備ミドルウェアインストールmycatとして:マスターデータベースとしてIP(192.168.204.130)、いずれかのスレーブデータベースとしてIP(192.168.204.128)、一方(IP:192.168.204.129)

5、インストール構成mycat

mycatは、インストールをサポートするために提供されたインストールパッケージをコンパイルし、WindowsやLinux、Macの、Solarisおよび他のシステムでは、公式ウェブサイトのアドレスはhttp上で実行しています//www/mycat.lo

Linuxでのノートのディレクトリは次のように、USR /ローカル/ Mycatディレクトリの下に提案を置くために、Linuxの(UNIX)の下で、スペースを持つことができない、ディレクトリ内のMycat-サーバーxxxxx.linux.tar.gzの解凍をダウンロードすることができます。 

Mycatがmycatサービスを管理するためのユーザを作成し、単にファイルの変更mycatの所有者がグループで解凍し、そしてmycatユーザーのパスワードを作成することは123456です

#useraddのmyCat [ルート@はSRC myCat]
#chownをmyCat [ルート@はSRC myCat]:myCatは/ usr / local / myCat / -R&LTを
[ルート@は、SRCをmyCat]#PA
パッカー別れ貼り付け
partprobeをpam_console_applyをするpathchk
pam_tally2 partx
pam_timestamp_check passwdの
[ルート@ SRC mycat] PASの#の
passwdが貼り付け
ルートの@ mycatのソース]#passwdをがmycat [
ユーザーのパスワードを変更mycat。
新しいパスワード:
無効なパスワード:パスワード8文字未満の
新しいパスワードの再入力:
passwdの:すべての認証トークンが正常に更新されましたが。

次のようにカタログを説明します:

バージョン外治療を提供するサービスとしてパッケージ化プログラムのbinディレクトリ、ウィンドウストアのバージョンとLinuxバージョンは、また、NOWRAPシェルスクリプトを選択および変更を容易にするためのコマンドを提供します

confディレクトリ保存されたプロファイル、server.xmlのパラメータ調整がmycatサーバとユーザ認証プロファイルで、schema.xmlを論理ライブラリ定義テーブルならびにその断片と定義されたプロファイル、通常のスライスプロファイルをrule.xml、いくつかのパラメータに関する特定の情報は、このディレクトリにある、別のファイルルールとして保存され、コンフィギュレーション・ファイルを変更し、あなたはmycatを再起動するか、9066でポートをリロードする必要があります

依存メインのjarファイルmycatの一部を格納するためのLibディレクトリ

、ログ/ mycat.logにログオンします一日のファイル、confに/のlog4j.xmlに設定をログに記録し、あなたのニーズに応じて、あなたがデビュー、実質的に出力を調整することができ、次のレベルにデビュー、それは出力の詳細は、利便ますお問い合わせ

注意:Linuxでの展開は、MySQLをインストールし、デフォルトのテーブル名の場合は、手動で次のな/etc/my.cnfはlower_case_table_namesを設定する必要性を無視していない= 1無視環境に敏感で、それ以外の時間を見つけることができませんプロンプトが表示されますmycatを使用してMySQLのテーブル名にlinux間違ったテーブルへ

mycatは、上記jdl1.7をインストールしたりする必要があります

ステップ1:JDK-8u221-のlinux-x64.tar.gzファイルをダウンロード

ステップ2:ファイルには/ usr / javaのフォルダ、JDK-8u221-のlinux-x64.tar.gzの変更を作成し、カレントディレクトリに解凍

第三ステップ:変数は、/ etc / profileを下に以下を追加し、環境を設定

JAVA_HOME =は/ usr / javaの/ jdk1.8.0_221
PATH = $ JAVA_HOME / binに:$ PATHの
CLASSPATH = $ JAVA_HOME / JRE / libに/ EXT:$ JAVA_HOME / tools.jarを/ libに
輸出PATH JAVA_HOME CLASSPATH

ステップ4:有効にするには、プロファイルファイル、環境変数をリロード

[ルート@ mycatのJava]#ソースは/ etc / profile

展開mycatのLinuxが起動すると、まず、Linuxは次のように操作され、環境変数がMYCAT_HOMEシステムを設定する必要があります

最初のステップ:vimの/ etc / profileを、システム環境変数に以下のファイルを追加

MYCAT_HOME =は/ usr / local / mycatの
PATH = $のMYCAT_HOME / binに:$ PATHに

ステップ2:ソースの/ etc / profileコマンドは、有効にする環境変数です

[ルート@ mycatのJava]#ソースは/ etc / profile

あなたが以下のように設定されたサーバMyCATサーバが存在する、上の他のIPとホスト名へのマッピングを設定する必要があること、複数のLinuxシステムのMyCATクラスタに確立された場合: 

VIの/ etc / hosts

例えば:私が持っている 3台のマシン、設定を次のようになります。 

IPホスト名: 

master.cn 192.168.204.128
192.168.204.129 slave.cn
192.168.204.130 mycat.cn

編集したら、ファイルを保存します。 

conf / server.xmlファイル内のユーザーアカウントと認証情報mycat構成

[ルート@ mycatのJava]#のVimの/usr/local/mycat/conf/server.xml

<?xml version = "1.0"エンコード= "UTF-8"?>
<DOCTYPEのmycat:!サーバーSYSTEM "server.dtd">
<mycat:サーバーのxmlns:mycat = "のhttp://io.mycat/">
<システム>
<プロパティ名= "defaultSqlParser"> druidparser </ property>の<! - 1为开启实时统计、0为关闭- >
</システム>

<ユーザー名= "ルート">
<プロパティ名= "パスワード"> 123456 </プロパティ>
<プロパティ名= "スキーマ"> TESTDB </ property>の
</ユーザー>
<ユーザー名= "ユーザー">
<プロパティ名= "パスワード">ユーザー</プロパティ>
<プロパティ名= "スキーマ"> TESTDB </プロパティ>
<プロパティ名= "読み取り専用">真</ property>の
</ユーザー>

</ mycat:サーバー>

次のようにMycat編集設定ファイルは、dataHostについての構成情報をschema.xmlを:

[ルート@ mycatのJava]#のVimの/usr/local/mycat/conf/schema.xml

<?xmlのバージョン= "1.0">
<!DOCTYPEのmycat:スキーマSYSTEM "schema.dtd">
<mycat:スキーマのxmlns:mycat = "のhttp://org.opencloudb/">
<スキーマ名= "TESTDB" checkSQLschema = "false"をsqlMaxLimit = "100"データノード= 'DN1'>
</スキーマ>
<データノード名= "DN1" dataHost = "dthost"データベース= "HA" />
<dataHost名= "dthost" maxCon = "500" minCon = "10"バランス= "1" writeType = "0"のdbType = "MySQLの" dbDriver = "ネイティブ" SWITCHTYPE = " - 1" slaveThreshold = "100">
<ハートビート>を選択し、ユーザ()</ハートビート>
<writeHostホスト= "master.cn" URL = "192.168.204.128:3306"ユーザー= "ルート"パスワード= "123456">
</ writeHost>
<writeHostホスト= "slave.cn" URL = "192.168.204.129:3306"ユーザー= "ルート"パスワード= "123456" />
</ dataHost>
< / mycat:スキーマ>

二つのパラメータ注意を払う必要があり、バランスとスイッチタイプがあります。

前記負荷分散バランス値の種類、4の電流値

1)バランス=「0」、別々の読み取りを開き、メカニズムを書いていない、すべてが擁壁writeHostに送られ、読み込み

2)バランス=「1」、及び全てreadHostはwriteHostによってスタンド)選択単に文、デュアルマスタースレーブモード(M1、S1、M2-S2、M1及びM2が互いにマザーボード負荷分散に参加し、通常M2、S1、S2の場合は、select文の負荷分散に関与しています

3)バランス=「2」は、すべての操作はwriteHost、分配readhostにランダムで読み取ります。

4)残高=「3」、全てreadhost wiriterHost対応するランダムな分布に要求を読み取るwriterHost圧力読み取りが負担されていない、実行

スイッチタイプは、モードスイッチを指し、現在は、4つの値があります。

1)スイッチタイプ=「 - 1」には、自動スイッチがないことを意味します

2)スイッチタイプ=「1」デフォルトは、自動スイッチを示し

3)スイッチタイプ=「2」  に基づいて心拍文表示スレーブステータスの状態を切り替えるかどうかのMySQLマスタ-スレーブ同期決定

4)スイッチタイプ=「3」のMySQL galaryクラスタ(クラスタ適合)(1.4.1)、「wsrepの%」のようなハートビート・ステートメントを示す状態の切替機構に基づきます。

上記の2つの構成手順が完了したら、実行は/ usr / local / mycat / binディレクトリに移動することができます: 

./mycat開始

あなたはmycatサービスを開始することができます!この時点では、サーバの設定が完了しmycat。

図6に示すように、マスター・スレーブ構成のMySQL

インストールが唯一のyumを通じてmariadbをインストールすることができますので、私が使用mariadbの便宜のためにここにいると、コンパイルしてMySQLが使用することができますインストールしてください。

[ルート@奴隷〜]#yumを-yインストールmariadbのmariadb-サーバー

6.1構成マスター

設定ファイルを編集my.cnfファイル

[mysqldを]
DATADIR =の/ var / libに/ MySQLの
ソケット=の/ var / libに/ MySQLは/にmysql.sock
シンボリックリンクは= 0-
ログビン= MySQLのビン・マスター#が有効バイナリファイル
サーバID = 1つの#ローカルデータベースIDがマーク
ビンログ-DO-DB = TESTDB#はサーバーライブラリからコピーすることができ、バイナリはデータベース名同期する必要が
binlogの-無視-DB-mysqlの#は、サーバーのライブラリーからコピーすることはできません

lower_case_table_names = 1#設定mysqlのテーブル名の大文字と小文字を無視し、mycatの必要性

[mysqld_safeを]
ログインエラー=は/ var / log / mariadb / mariadb.log
PIDファイル=の/ var /実行/ mariadb / mariadb.pid

!includedir以下/etc/my.cnf.d

サービスを開始

[ルート@マスター〜]#はmariadbを開始systemctl

データパスの作成TESTDB

MariaDB [(なし)]>データベースTESTDBを作成します。
クエリOK、影響を受けた1行(0.01秒)

MariaDB [(なし)]> TESTDBを使用します。
データベースが変更さ
MariaDBは[TESTDB]>テーブルT1(ID int型、名前VARCHAR(20))を作成します。
影響を受けたクエリOK、0行(0.01秒)

MariaDB *上の[TESTDB]>助成金のレプリケーションスレーブ* '123456'でfiedが同定を[email protected]します。#授权登录
クエリOK、影響を受けた0行(0.00秒)

MariaDB [TESTDB]>ショーマスターのステータス。#查看マスター状态
+ ------------------------- + ---------- + -------- ------ + ------------------ +
| ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------------- + ---------- + ------------ - + ------------------ +
| mysqlのビン-master.000003 | 596 | TESTDB | mysqlの|
+ ------------------------- + ---------- + ------------ - + ------------------ +
セットにおける1行(0.00秒)

6.2スレーブの設定

プロフィールの編集

[mysqldを]
DATADIR =の/ var / libに/ MySQLの
ソケット=の/ var / libに/ MySQLの/にmysql.sock
シンボリックリンク= 0
サーバID = 2

[mysqld_safeを]
ログインエラー=は/ var / log / mariadb / mariadb.log
PIDファイル=の/ var /実行/ mariadb / mariadb.pid
マスターホスト= 192.168.204.128
マスター・ユーザー=スレーブ
マスターパスワード= 123456
マスター-ポート= 3306
マスター-接続再試行= 60

!includedir以下/etc/my.cnf.d

 

mariadbを開始systemctlサービス[ルート@軟膏〜]#を開始

MariaDB [(なし)]>スレーブ#を停止先停止スレーブ
- >。
クエリOK、影響を受けた0行、1つの警告(0.00秒)

MariaDB [(なし)]>変化 = '192.168.204.128'をMASTER_HOSTマスタ、master_userは= 'スレーブ'、master_password = '123456';#は、マスタに接続
クエリOK、影響を受けた0行(0.01秒)

MariaDB [(なし)]>スレーブ開始。#启动スレーブ
影響クエリOK、0行(0.01秒)

MariaDBは、[(なし)]> 2イエスがあり、スレーブステータス\ Gの#ビュースレーブのステータスを表示し、それはあなたがデータベースTESTDBを同期させることができるかどうか、成功を意味しません

図7に示すように、一次接続mycatから構成サーバ

プライマリサーバmycat 7.1許可されたユーザがログイン

MariaDB [(なし)]> *全てに付与* '123456'によって識別[email protected]します。
影響を受けたクエリOK、0行(0.01秒)

7.2許可ユーザーは、サーバーmycatからログイン

MariaDB [(なし)]> *全てに付与* '123456'によって識別[email protected]します。
影響を受けたクエリOK、0行(0.01秒)

成功したかどうかを確認するために8、テスト・クライアント・サーバーの接続mycat。マスタサーバからのテスト結果とダウンした後、それぞれ

おすすめ

転載: www.cnblogs.com/hackerlin/p/11309107.html