MySQLのコールドバックアップから別slave作ってハマった件

以下の手順でハマった。対象のバージョンは5.6.27

  1. あるslaveでMySQLを停止してコールドバックアップをとって起動
  2. バックアップをコピって別サーバでslaveを構築
  3. MySQL起動したら、 元サーバ のio_runningが停止。

原因はauto.cnfを消してなかったのでserver_uuidが衝突してしまったから。orz...
# server_uuidは5.6からなので、完全にやらかしてもうた。

ちなみにshow slave statusで出てたエラーメッセージは以下の様なカンジ

A slave with the same server_uuid as this slave has connected to the master

教訓

  • コールドバックアップからslaveを作る際はauto.cnfは消そう。
  • もしくはバックアップからそもそもauto.cnfを除外しよう。

愚痴

server_uuidが衝突したらレプリ止まるのは仕方ないとしても、後勝ち(先に接続したレプリが止まる)ではなく、先勝ち(後から接続に来たレプリがコケる)にしなかったのはなんでなんだろう?

「start slaveしたら別サーバのレプリが止まる」とか、どう考えても罠やん。。。