#mysql チュートリアルこのコラムでは、Mysql の GTID ベースのレプリケーション モードとは何かを紹介します。
##GTID 定義GTID (グローバル トランザクション識別子) グローバル トランザクション識別子。 GTID は、バージョン 5.6 で導入されたマスター/スレーブ レプリケーションの大幅な改良です。ビンログ ファイルの位置に基づく以前のバージョンのマスター/スレーブ レプリケーションと比較して、GTID ベースのマスター/スレーブ レプリケーションは、より高いデータ一貫性とより堅牢なマスター/スレーブ データ レプリケーションを備えています。スイッチオーバーとフェイルオーバーはエラーが発生しにくく、人間の介入がほとんど必要ありません。
表現方法GTID = server_uuid:transaction_id
GTID は通常、MySQL システム変数に記録されます@@GLOBAL .gtid_executed
とシステム テーブル mysql.gtid_executed
では、システム変数 @@GLOBAL.gtid_executed
はメモリ内にあり、非永続ストレージに属しますが、システム テーブル mysql. gtid_executed は永続ストレージに属します。
従来のレプリケーションに対する GTID の利点
マスター/スレーブ レプリケーションの構築が容易log_pos
GTID を段階的に見つける必要はありません。GTID は連続しており、ホールが発生し、データの一貫性が保証されます。 Innodb や myisam などのエンジンを 1 つのトランザクションに混在させると、複数の GTIDS が発生します
CREATE TEMPORARY TABLE および DROP TEMPORARY TABLE
はトランザクション内では使用できません
GTID ライフ サイクル
トランザクションがメイン データベースで実行およびコミットされるとき、その後、このトランザクションにはメイン ライブラリの uuid に関連付けられた gtid が割り当てられ、この gtid はメイン ライブラリの binlog ファイルに書き込まれます。 binlog ファイルが最大サイズに達してローテーションされるか、MySQL Server がシャットダウンされると、前の binlog ファイル内のトランザクション GTID が mysql.gtid_executed テーブルに書き込まれます。
表内。
を gtid 値に設定します。これにより、スレーブ ライブラリは gtid 値を使用して対応するトランザクション
を適用します。 複数のスレッドが同時に同じトランザクションを適用する場合 (複数のスレッドが gtid_next を同じ値に設定する場合など)、MySQL Server はスレッドの 1 つだけの実行を許可します。 GTID.
すべてのサーバー設定global.read_onlyパラメータ、マスター サーバーとスレーブ サーバーを待機しています 同期が完了しました;
mysql> SET @@global.read_only = ON;
mysql> CHANGE MASTER TO MASTER_HOST = host, MASTER_PORT = port, MASTER_USER = user, MASTER_PASSWORD = password, MASTER_AUTO_POSITION = 1;
mysql> START SLAVE;
mysql> show slave status \G
以上がMysql の GTID ベースのレプリケーション モードを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。