MySQLアップグレードでレプリカのIDがずれ、本番でデータ不整合が発生

A safe MySQL upgrade that wasn't so safe

MySQLのバージョンアップグレード後、レプリカ上の特定テーブルでAUTO_INCREMENT列のIDがソースと異なる順序で割り当てられる問題が発生。5つの関連テーブルは正しく新しいIDを参照したが、1つのテーブルだけが古いIDを参照し、データの不整合を引き起こした。原因はbinlog_formatがMIXEDで、一部のUPDATE文がROW形式でログされ、レプリカで直接行変更が適用されたため。AUTO_INCREMENT列の追加がレプリケーションで安全でないケースがあることを示す実体験の報告。

AUTO_INCREMENT列を追加すると、ソースとレプリカで行のIDが異なる順序で割り当てられる可能性があるというMySQLのドキュメントの指摘は、まさにその通りだった。

この日のほかの記事

2026-08-29