猫でもわかるWeb開発・プログラミング猫でもわかるWeb開発・プログラミング本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。実装されたGTIDレプリケーションを、とにかく簡単に、とにかくわかりやすく解説したものです。それゆえ正確な説明ではなくなっているところがあります。正確な知識を得るための導入としてお読みください。レプリケーションの略です。レプリケーションとはなんぞや?についてこれから説明していきます。GITDでないレプリケーションとはGTIDでないレプリケーションは、多分固有の名前はついてないと思うのですが、仮に「バイナリログ名とポジションによるレプリケーション」と呼ぶことにします。バイナリログとポジションとはバイナリログとは、簡単に言うと、MySQLサーバーのクエリの実行ログです各バイナリログには名前がついています。これがバイナリログ名ですポジションとは、要するに各バイナリログの行数ですバイナリログ名とポジションによるレプリケーションとはSlaveは、Masterに流された更新クエリと同じクエリを自分にも流します。Slaveは「Masterの更新クエリをどこまで実行したか」を「バイナリログ名」と「ポジション」で判別して、それ以降のクエリを実行していきます。これがバイナリログ名とポジションによるレプリケーションです。バイナリログ名とポジションによるレプリケーションの複雑なポイント当然SlaveもMasterと同じようにバイナリログを持っています。Masterと同じクエリでも、MasterとSlaveではバイナリログ名とポジションが違ったりするのです。バイナリログ名とポジションによるレプリケーションのデメリットではこれは何がダメなのでしょう。「SlaveがMaster昇格する時」に困ります。Master1台に対して複数台のSlaveがある場合に、Masterが故障して、ある一つのSlaveがMasterに昇格すとします。この時「壊れたMaster」と「昇格してMasterになったSlave」のバイナリログが異なるため、レプリケーションを貼り直す際に不具合が生じます。(GTID)」が付きます。GTIDが同じであればクエリも同じです。バイナリログ名やポジションのように、サーバーごとに値が異なることはありません。「レプリケーションがどこまで行われたか」はGTIDを使って管理されるようになります。これによって、先ほどのようにSlaveがMasterに昇格する場合も、ログのポジションで迷うことがなくなるわけです。詳しく理解したい以前のブログでも上げましたが、以下の記事が非常に参考になります。続編(補足)的な感じで書きました。こちらの記事も読んでみてください。スポンサーをお願いしますブログを投稿したらX(twitter)でお知らせしています。