mysql マスター/スレーブ レプリケーションの概要

1. mysql マスター/スレーブ レプリケーションの概要

1.1 mysql マスター/スレーブ レプリケーションの利点:

1. 提升读写性能: たとえば、ある sql を実行するとテーブル全体がロックされます. このとき、スレーブ ライブラリが読み取り機能を提供できれば、読み取りと書き込みの分離が実現され、マスター ライブラリが書き込みを行い、パフォーマンスを向上させるためにスレーブ ライブラリを読み取ります。
2. 提高可用性: たとえば、データをバックアップするには、スレーブ ライブラリからデータをバックアップして、メイン ライブラリのバックアップがメイン ライブラリの書き込みに影響を与えないようにすることができます。別の例として、マスター ライブラリに障害が発生した場合、スレーブ ライブラリに切り替えることができます。

1.2 マスター/スレーブ レプリケーションの手順は次のとおりです。

1. マスター データベースのサーバー ID、bin ログ ファイル名を構成し、コピー権限を持つアカウントを作成して、スレーブ データベースに許可します; 2. サーバー
ID、ビン ログ ファイル名、およびリレー ログを構成しますスレーブ データベース用。ライブラリから change master コマンドを実行して、マスター ライブラリの IP、ポート、ログ ファイル、およびログ ファイルの位置を指定します。スレーブ開始コマンドを実行して、スレーブ ライブラリの同期を有​​効にする箭头2と ( )、マスタ ライブラリの位置以降のデータが同期されます。
3. スレーブによって送信された指定の bin-log ログ位置ポイントの後に新しいコンテンツがない場合、マスター ライブラリは操作を実行しません。データの更新があると
( 箭头1)、マスター ライブラリは更新されたデータと最新の bin-log ファイルの名前と位置を、マスター箭头3IO スレッドを介してスレーブ ライブラリに送信します ( )。
4. ライブラリからデータを受信後、Slave IO スレッドを使用してログの内容を受信し依次添加到Slave端的relay-log文件的最末端( 箭头4)、Master 側で読み込んだファイル名と bin-log の位置ポイントをmaster.infoファイルに記録し、 read next time レスポンスの bin-log ファイル名と最後の位置ポイントからリクエストを開始するようマスターに伝えることができます。
5. スレーブ Sql スレッドは、リレー ログの内容が更新されたことを検出し、解析relay-log的内容マスターが実際に実行するときに実行可能な SQL ステートメントをすぐに実行します将解析的SQL语句并在Slave里执行( 箭头5. 実行が成功した後、マスター ライブラリとスレーブ ライブラリはデータの一貫性を維持します)。 .
ここに画像の説明を挿入
備考 1 :
主に使用される3个线程: メイン ライブラリの IO スレッド、スレーブ ライブラリの IO スレッド、および実行 SQL スレッド。
主に使用2个文件: マスター ライブラリの bin-log ログ ファイル、およびスレーブ ライブラリのリレー ログ ログ ファイル。
注意 2 :
主库与从库之间维持了一个长链接メイン ライブラリ内に、ライブラリからのこの長いリンクを提供する専用のスレッドがあります。
注意 3:
binlog ログには、ステートメント (SQL ステートメント)、行 (実データ)、混合の 3 つの形式があります。
MySQL の叔父は、混合形式の binlog という妥協案を考えました。いわゆる混合形式は、実際には行形式とステートメント形式の混合です当MySQL判断可能数据不一致时,就用row格式,否则使用就用statement格式

1.3 質問 1: マスタ ライブラリの位置の前のデータをスレーブ ライブラリに同期する方法は?

1. マスタ/スレーブ同期は、マスタ ライブラリのポジション position 以降のデータのみです。株式データを同期したい場合は、まずメインデータベースをロックしてから、Linux の mysqldump コマンドを使用してメインデータベースのデータベースをバックアップする必要があります。次に、Linux の mysql コマンドを使用してバックアップ データをスレーブ ライブラリのマシンに転送し、スレーブ ライブラリのスレーブ ライブラリに全量を書き込みます。

主なデータベースは通常日中に書き込まれているため、この種の株式データのレプリケーションは一般的に早朝に同期されると考えられ、マスターのファイルと位置の変更は少なく、ユーザーへの影響は少なくなります。以下。

1.4 質問 2: マスターとスレーブの同期がずれないようにする方法は?

1. 避免从库压力大: 複数のスレーブ ライブラリを追加できます。ライブラリからの過剰なアクセスによる過度の CPU 消費を回避します。その結果、メイン ライブラリのデータを同期するためのリソースが間に合いません。もちろん、スレーブの数が多すぎてはいけません。通常は 3 ~ 5 ユニットで十分です。
2. 避免操作大事务: 大規模なトランザクションは、スレーブ データベースの実行時間も非常に長いことを意味します。これにより、マスターとスレーブのレプリケーション時間が長くなり、マスターとスレーブが同期しなくなります。たとえば、トランザクションの実行に 10 分かかる場合、マスター ライブラリの実行後、スレーブ ライブラリによって実行され、最後に、このトランザクションによってスレーブ ライブラリから 10 分の遅延が発生する可能性があります。
3. 主从配置不一致: 同じ高バージョンの mysql を使用します。より新しいバージョンの mysql は、複数のスレッドで複製できます。
4. 从库复制响应慢: パラメータを設定し、スレーブ側で binlog を直接無効にし、スレーブ側で sync_binlog を 0 に設定することで、スレーブ ライブラリのパフォーマンスを向上させることができます。

参考記事:
1.MySQLマスタースレーブレプリケーションの詳細解説と実戦
2.MySQLマスタースレーブ
3.mysqlマスタースレーブ
4.Mysqlマスタースレーブ不一致、スレーブデータベース再同期

おすすめ

転載: blog.csdn.net/xueping_wu/article/details/127216993