以下の内容はhttps://interdb.hatenablog.com/entry/20140625/1403630218より取得しました。


クラッシュセーフなスレーブ

MySQLでslaveをクラッシュセーフ*1にするには、

  • MySQL 5.6以上
  • relay_log_recovery=ON
  • relay_log_info_repository=TABLE

というセッティングが必要。詳細は"こちら"、翻訳版は"こちら"


ざっくり言えば、リレーログのreplayと同じトランザクションで、InnoDBテーブルにリレーログの情報を書き込みcommitするので、大丈夫だよというお話。


MariaDBがこの機能に追従しないので、どうしたんだろうと思っていたら、MariaDBはGTIDのreplay状態などをgtid_slave_posというInnoDBテーブルに書き込むという技術的選択をしていた。もちろん、書き込むタイミングはreplayとおなじトランザクション
よって、MariaDB10.0以降は、GTIDを設定すればslaveがクラッシュセーフになる。MariaDBのGTIDはそこそこ完成しているので、こっちのほうが合理的な気がする*2

*1:スレーブがダウンしても、リレーログなどの情報が狂わないで再起動できる。

*2:MySQLのGTIDがまともになったら、同様の選択をするように思う。いつマトモになるかは知らないが。




以上の内容はhttps://interdb.hatenablog.com/entry/20140625/1403630218より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14