地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】GTIDがオフかつMTSがオンだとレプリケーションで不整合が起きえる

マルチスレッドレプリケーション(MTS: Multi-Threaded Replication)を使用する場合、MySQL 8.0.27以降でGTIDを使用せずにレプリケーションを行っていると、特定のシナリオで問題が発生することがあります。MTSがデフォルトで有効になっているため、複数のワーカースレッドが並行して異なるトランザクションを処理します。これにより、バイナリログのポジションが一番遅れているスレッドのポジションとして更新され、不整合が発生する可能性があります。

取れる対策

  • GTIDの使用を検討する
  • シングルスレッドレプリケーションへの切り替えを検討する
  • レプリカのエラー検出とスキップ設定
    • レプリカのエラー検出と自動回復のメカニズムを設定することで、問題が発生した際に迅速に対応し、ダウンタイムを最小限に抑えることができます。特に、slave_skip_errors オプションを設定することで一部のエラーを無視してレプリケーションを継続することも可能ですが、データ整合性への影響に注意が必要です。