web-dev-qa-db-ja.com

Slave_SQL_Running:いいえ:MySQLレプリケーションが機能を停止しました

スレーブデータベース(MySQL 5.7.12)でのレプリケーションが突然停止しました。 SHOW SLAVE STATUS\Gを実行すると、次のエラーが表示されます。

Last_Errno: 1396
Last_Error: Error 'Operation CREATE USER failed for 'user'@'ip'' on query. Default database: ''. Query: 'CREATE USER 'user'@'ip' IDENTIFIED WITH 'mysql_native_password' AS '*password''

私は最近、マスターとスレーブの両方に2人の新しい読み取り専用ユーザーを作成したので、これが原因であると確信しています。

これはステータスでも確認できます。

Slave_IO_Running: Yes
Slave_SQL_Running: No

これを修正する方法に関する提案はありますか?

ありがとうございました。

5
tptcat

TL; DR

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; 
START SLAVE;

今少し長いバージョン:

最初にスレーブで、次にマスターでユーザーを手動で作成した場合、マスターで実行されたCREATE USERコマンドはスレーブに複製されています。ユーザーがすでに存在しているため、ステートメントの後続の実行に失敗しました。 「これ」を修正するための私の提案:

  • レプリケーションエンジンにステートメントをスキップして次に進むように伝えます
  • 将来レプリケーション設定でスレーブをいじらないでください
  • これまでに行ったことのないことをするときは、必ず 公式ドキュメント を読んでください。
10
the-wabbit