この記事では、MySQL のマスターとスレーブの同期の原理、マスターとスレーブの同期の構成、およびマスターとスレーブの同期の遅延について紹介します。まず、名前が示すように、マスターとスレーブの同期とは何であるかを理解しましょう。マスター/スレーブ レプリケーション。マスターとまったく同じデータベース環境を構築するために使用されます。マスター/スレーブ同期により、あるデータベース サーバーから他のサーバーにデータをコピーして、マスター データベース内のデータとスレーブ データベース内のデータの一貫性を確保できます。
クラスターは共有ストレージであり、マスター/スレーブのレプリケーションでは共有がありません。各マシンは独立した完全なシステムであり、何も共有されません。
MySQL 5.6 以降では、マスターとスレーブのレプリケーションを実装する主な方法が 3 つあります。
1. メインデータベースの更新イベント (更新、挿入、削除) がバイナリログに書き込まれるとき
3. このスレッドは、ライブラリから SQL スレッドを作成します。スレーブ ライブラリ I/O スレッドによってリレー ログに書き込まれたイベントを更新し、それらを実行します。
マスターとスレーブの同期の実装 (非同期レプリケーション、異なるサーバー上のデータベース)
1. binary-log を開くようにメイン データベースを構成します
vim /etc/my.cnf 在[mysqld]下添加 server-id=1(用来标识不同的数据库)log-bin=master-bin(打开bin-log并配置文件名为master-bin)log-bin-index=master-bin.index(区分不同的log-bin文件)
vim /etc/my.cnf 在[mysqld]下添加 server-id=2relay-log=slave-relay-bin(打开relay-log并配置文件名为slave-relay-bin) relay-log-index=slave-relay-bin.index
3. メインで 2 つのデータベースを接続しますデータベース: ユーザー repl を作成します。各スレーブ サーバーは、メイン サーバーに接続するためにメイン データベースにアカウント名とパスワードが必要です。
CREATE USER 'repl'@'114.116.77.213' IDENTIFIED BY '12312';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'114.116.77.213' IDENTIFIED BY '12312';
change master to master_host='47.106.78.106',master_user='repl',master_password='12312',master_log_file='master-bin.000001',master_log_pos=0;
4. 確認します
マスターデータベースにデータベースを作成し、スレーブデータベースでのマスターとスレーブの同期の役割を確認します
1. データのホットバックアップを実行し、メインデータベースサーバーの後のバックアップデータベースとして機能します。失敗した場合は、データ損失を避けるためにスレーブ データベースに切り替えて作業を続行できます。2. 読み取りと書き込みを分離することで、データベースはより優れた同時実行性をサポートできます。
マスター ライブラリはデータの読み取りと書き込みができますが、スレーブ ライブラリはデータの読み取りのみが可能です。これは、スレーブ ライブラリがデータを書き込むときは位置が変更されますが、マスター ライブラリが書き込むときはマスター ライブラリの位置が変更されないため、競合が発生する可能性があります。データの位置が変更されたとき
メインライブラリのバイナリログファイルに大量のデータが保存されている場合、つまり位置が非常に大きい場合、新しいバイナリログファイルが分割され、位置が 0 に設定されます。
(データベースのマスター/スレーブに関する質問がある場合は、以下の質問をする必要があります):
マスター/スレーブの利点は何ですか?
マスタースレーブの原理とは何ですか?
マスタ・スレーブの同期遅延問題
1.マスタースレーブ間の遅延の原因同期
2. マスターとスレーブの同期の遅延に対する解決策
a. マスター サーバーは更新操作を担当するため、sync_binlog=1、innodb_flush_log_at_trx_commit = 1 などの一部の設定は変更できますが、スレーブは変更できません。データのセキュリティを高めるために、sync_binlog を 0 に設定するか、binlog、innodb_flushlog、innodb_flush_log_at_trx_commit を 0 に設定して、SQL の実行効率を大幅に向上させることができます。もう 1 つは、メイン ライブラリよりも優れたハードウェア デバイスをスレーブとして使用することです。
b. クエリを提供せずにスレーブサーバーをバックアップとして使用するだけで、負荷が軽減されると、リレーログ内の SQL の実行効率が自然に高くなります。
c. スレーブサーバーを追加する目的は、読み取り圧力を分散し、サーバーの負荷を軽減することです。
関連する推奨事項:
以上がmysqlのマスター/スレーブ同期の原理、構成、遅延の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。