一つ、二つのサーバ・プランニング
サーバー:ホスト名:yjwebのIP:121.122。123.47 役割:サーバー-メイン図書館上記のid上記:1 Jサーバ:ホスト名:OS3 IP: 121.122。123.134 役割:サーバー-ライブラリから上記のid上記:2
説明:1、メインのライブラリがすでにデータを持っていた、我々は、エクスポートデータに必要
2、我々は唯一のデータベースを同期する必要があります。データベース名:出会いを
3は、MySQLデータベースのバージョン:8.0.19、
注意同じデータベースの2つのバージョンを維持するには、メインのライブラリは、リポジトリからのバージョンよりも高くないしてみてください
説明:森アーキテクチャの劉協会は、フレームワークが重視ブログ、アドレスでhttps://www.cnblogs.com/architectforest
:対応するソースコードがためにここにアクセスすることができる https://github.com/liuhongdi/
説明:著者:劉協会Eメール:[email protected]
第二に、主なライブラリ:あなたは、同期からのショットを呼び出すことができることを確認し、設定ファイルを参照してください。
[ルート@ yjweb〜] $ 以上な/etc/my.cnf
二つの重要な設定項目があります。
[サーバID = 1つの ログ -bin = /データ/ MySQLの/バイナリログ/ MySQLのビン
説明:サーバIDとライブラリの別の領域にメインライブラリサーバID、
ログ・ビンを行うための主な図書館、複製のためのバイナリログからのための主な用途
注:mysql8、変数のデフォルト値はbinlog_format行であるため、
私たちはもはや、手動でこの設定変数を宣言しません
第三に、メインライブラリー:同期アカウントを作成します。
説明:このアカウントは、ライブラリからの主なライブラリなので、「バックアップ」のためにアクセスされることはありません@「121.122.123.134」、IP IPライブラリから
[ルート@ yjweb〜]#は/ usr / local /ソフト/ mysqlの/ binに/ mysqlの-uルート-p
1、同期アカウントとAUTHORIZEを作成します。
MySQLの>ユーザー作成' バックアップ' @ ' 121.122.123.134 'で識別される' backuppasswordを' ; クエリOK、0影響を受ける行(0.00 秒) mysqlの *の>助成金のレプリケーションスレーブ。*バックアップへ@ 121.122。123.134 ; クエリOK、0影響を受ける行(0.00秒)
成功を作成するために、チェック2.?
MySQLの> を選択し mysql.userから*どこユーザー= ' バックアップ' ;
現在のユーザーが認証を取得したチェック3.
MySQLの>ショーの助成金のために、@バックアップ121.122。123.134 ; + ------------------------------------------------- ------------- + | 補助金のために、@バックアップ121.122。123.134 | + ------------------------------------------------- ------------- + | GRANT REPLICATION SLAVE ON *。* `@` backup` TO 121.122。123.134 `| + ------------------------------------------------- ------------- + 1行にセット(0.00秒)
4、新しいアカウントを有効にします
MySQLの> フラッシュ権限; クエリOK、0影響を受ける行(0.00秒)
第四に、メインライブラリー:データのエクスポートは、データベースを同期します
説明:データのエクスポートに加えて、ログレコードの現在の位置でメインライブラリーに焦点を当て
データ書き込み動作を避けるためになった1、プラスグローバルリードロック、
MySQLの> READ LOCK WITH FLUSH TABLESを。 クエリOK、0影響を受ける行(0.00秒)
2、現在のログファイルと場所を表示し、記録します
MySQLの> ショーマスターのステータス。 + ------------------ + ---------- + -------------- + ---- -------------- + ------------------- + | ファイル| 位置| Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | + ------------------ + ---------- + -------------- + ---- -------------- + ------------------- + | mysqlのビン。000014 | 55813 | | | | + ------------------ + ---------- + -------------- + ---- -------------- + ------------------- + 1行にセット(0.00秒)
3、他の端末を開いて、データベースのデータの同期が必要由来しました
[ルート@ yjweb〜]#は/ usr / local /ソフト/ mysqlの/ binに/ mysqldumpを--port = 3306満たす--lock-テーブルを--databases -prootpassword -uルート= 偽 - > /root/meet.sql
説明:ライブラリからサーバーにアップロードするエクスポートしたデータファイル
ロック解除:4は、単にどこmysqlのターミナルに戻ってきました:
> mysqlのUNLOCK TABLESを。 クエリOK、0影響を受ける行(0.00秒)
第五に、メインライブラリー:ファイアウォールの設定を確認してください
[ルート@ yjweb〜]#ファイアウォール-CMD --list-すべて
ライブラリは、IPからファイアウォールに追加されたかどうかをチェック
例えば:
豊富なルール: ルールの家族 = 「IPv4の」送信元アドレス= 「121.122.123.134 」受け入れます
第六に、ライブラリから:データのインポート
1、Webサービス、回避入りへのアクセスをオフにします
[ルート@ OS3〜]#systemctlの停止nginxの
2、現在のデータベースの同期化がある場合、削除データ
MySQLの> ドロップデータベース会います。 クエリOK、19影響を受けた行(0.24秒)
3、データのインポート
ライブラリからメインライブラリSQL(このステップは、メインライブラリ上で実行される)にエクスポートしたファイルをコピーします。
[ルート@ yjweb〜]#scpコマンド @ ./meet.sqlルート121.122。123.134:/ルート/
ライブラリから、インポート
[ルート@ OS3のconf]#/データ/ソフトウェア/ mysqlの/ binに/ mysqlの--host = 127.0。0.1 --port = 3306 -uルート-prootpassword </root/meet.sql
マスター・スレーブ構成:ライブラリーから七
[ルートを設定するには、OS3 @〜]#viの etcmycnf
主なconfigureは次のとおりです。
サーバ- ID = 2 の反復 - DO -db = 会う READ_ONLY = 1
説明:複製-DO-DBは、あなたがコピーしたいデータベースを指定するために使用されます
READ_ONLY通常のユーザー(root以外)をアクセスするときの権限を読み取り専用、書き込みしないでください
注:行われた設定ファイルmy.cnfファイルを変更した後、mysqlデータベースサービスを再起動することを忘れないでください、
設定を有効にし、それ以外の場合は次のエラーを報告します。
致命的なエラー:マスタとスレーブが同じMySQLサーバIDを持っているので、スレーブI / Oスレッドが停止します。
これらのIDは異なっていなければならないため、作業への複製
(または--replicate-同じサーバ- のidオプションスレーブで使用する必要がありますが、これは必ずしもありません作る感覚を、
それを使用する前に取扱説明書をご確認ください)
八、ライブラリから:同期を実行します。
ライブラリーからの停止同期
MySQLの> 停止スレーブ; クエリOK、0影響を受ける行、1つの警告(0.00秒)
メインライブラリに接続するための設定情報
MASTER_HOST =に対するMySQL>変更マスタ' 121.122.123.47 '、MASTER_PORT = 3306、master_user = ' バックアップ'、master_password = ' backuppassword '、MASTER_LOG_FILE = ' のMySQL-bin.000014 '、MASTER_LOG_POS = 55813 。 クエリOK、0影響を受ける行、1つの警告(0.03秒)
同期は、ライブラリからなっています
MySQLの> スレーブを起動します。 クエリOK、0影響を受ける行(0.00秒)
ナインは、ライブラリから:同期のケースを確認してください
1、ライブラリーからのステータスを表示
MySQLの>ショースレーブステータス;
これら二つの焦点を見てください:
Slave_IO_Running | Slave_SQL_Running
これら二つはある必要があります
はい| はい
2、ライブラリーからのビューで、更新後の挿入または変更は、変更がメインのライブラリに場所を取ることができるかどうかが有効です
説明:本館上からMySQLは、追加の情報、続いて同期を完了しています
テンは、状況の解釈からスレーブ・ステータスメイン同期情報を示しています。
メインライブラリーの情報を表示するには、1:
MASTER_HOST:#メインライブラリサーバーのアドレス
Master_User:アクセスへ#メインライブラリーユーザー名
MASTER_PORT:#メイン図書館のmysqldポート
状態2、Slave_IO_RunningとSlave_SQL_Running二つのスレッド
Slave_IOスレッドライブラリ(Relay_Log)へのリレーログから配信ビンログメインライブラリー(Master_Log)コンテンツ、責任があります。
Slave_SQLスレッドがライブラリーから再びリレーログの実施に関する声明を担当しています。
はい、通常、明示例外がないことを示します。
二つのスレッドの状態がそうであれば、それは通常の同期を示し、
次の4つを参照するには一つの項目がない、この時間に注意を払うがある場合:
Last_IO_Errorは、理由のIOエラーが発生した保存しました
Last_IO_Error_Timestampは、エラーが発生したIO時間を記録します
Last_SQL_Errorは、SQLエラーが発生した原因を保存しました
Last_SQL_Error_Timestampは、SQLエラーが発生した時刻を記録します
3、どのように主同期から間隔を決定するために?
MASTER_LOG_FILE#I / Oスレッドが現在読み込んでいるマスタバイナリログファイルのボリュームの名前
名前のRelay_Master_Log_File#同期マスタのバイナリログファイルはSQLスレッドによって実行されます
同じ名前を持つつ以上のファイルがあれば、同じバイナリファイルに読み取りと実行
マスタバイナリログの現在の位置で#は、I / Oスレッドが読んでいる:Read_Master_Log_Posを
Exec_Master_Log_Pos:#時間SQLスレッド位置を実行することにより、マスタサーバからバイナリログに
同一位置の上記の二つの数字は、完全同期を読み出して実行の進捗を示す場合
4、Replicate_Do_DB:ここではデータベースの同期の名前です
5、Slave_IO_State:例えば、表示待ち、:送信イベントにマスターを待っています
リレーログのSQL文は完全に実行された表します
6、Seconds_Behind_Master:
スレーブSQLスレッドおよびI / Oスレッド間の時間差
二台のマシン間のネットワーク接続が悪い場合、この値が非常に低いことが可能であり、
しかし、ライブラリーより上のメインライブラリの後ろに同期、
だから、単に同期に基づいて判断することはできません
セブンイレブン3バイナリログ形式の意味:
binlogのフォーマット、3つがあります。STATEMENT、ROW、MIXED。
1、STATEMENTモード(SBR)
各修正するデータのSQLステートメントはバイナリログに記録されます。
記録データは、ログのbinlog、IOの削減、パフォーマンスの向上の量を減らし、すべてのSQL文と、それぞれの行を変更する利点は、必要とされていません。
欠点マスタースレーブにデータの不整合が生じる可能性があることである(例えば、スリープ()関数として、)(LAST_INSERT_ID、およびユーザ定義関数(UDF)の問題が発生)
2、ROWモード(RBR)
SQL文は何に変更、データのみの記録が変更されているすべてのコンテキスト情報を、記録しません。
長所:ストアドプロシージャは、ある特定のケースに表示される、または機能、または問題を正しく再現できないコールおよびトリガーを誘発しません。
短所:ALTER TABLEはブームを記録します場合は特に、たくさんのログを生成します。
図3に示すように、混合モデル(MBR)
少なくとも2つのモードの混合物で、
ビンログを保存するための一般的な使用STATEMENTコピーモード、
ROW文モードを使用して動作モードは、バイナリログを保存するためにコピーすることができないために、
MySQLはSQL文の実行によりログを保存することを選択します。
説明:行形式最も安全な、それが現在のデフォルトフォーマットmysql8です
十二は、MySQLのデータベースのエディションとCentOSのバージョンを参照してください。
[ルート@ yjweb〜]#は/ usr / local /ソフト/ mysqlの/ binに/ mysqldを- V は/ usr / local /ソフト/ mysqlの/ binに/ mysqldを版8.0。19 用のlinux-glibc2の。12 x86_64版上(MySQLコミュニティサーバ- GPL)
[ルート@ yjweb〜]#の猫の/ etc / redhat- リリース CentOSのLinuxリリース8.0。1905(コア)