MySQL升级陷阱:AUTO_INCREMENT引发的数据错乱
A safe MySQL upgrade that wasn't so safe
我收到数据库版本过期的通知,为了避开AWS的额外支持费,我决定升级。我按惯例先升级了绿色的副本,确认无误后切换流量,本以为一切顺利。然而一小时后,奇怪的Bug报告接踵而至。检查发现,某张表的主键ID顺序在源库和副本上完全不一致,导致关联表中的外键指向了错误的行。原来,在MIXED模式下,MySQL对包含AUTO_INCREMENT列的更新操作,在源库使用STATEMENT模式,却在副本上切换到了ROW模式。这种复制机制的微妙差异,让原本安全的升级演变成了一场数据灾难。
这类问题最可怕的地方在于,它既出乎意料又极易被忽视,却能在生产环境中迅速演变成一场灾难,让你事后只能困惑不已。