2014年11月01日

SlaveDBに更新SQL流して止まったとき。

間違って、スレーブでCreateや、insertを実行して、スレーブが止まった(Slave_SQL_Running: No)。

その場合の対処方法。

show slave status\G;

で、エラーになっているSQLが見える。

Last_Errno: 1050
Last_Error: Error 'Table 'HOGE_TBL' already exists' on query. Default database: 'foo_db'. Query: 'CREATE TABLE HOGE_TBL
(
ID BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',

そんな時に以下のコマンドで、 SQL実行をスキップする。

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;

一気に複数のDDLを流してしまったら、ひたすら以下を繰り返していけばよい。
1つずつスキップしていくのが確認できる。

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
start slave;
show slave status\G;

最終的に

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

に戻ればOK。

初めての対応だったので覚えておこう。
posted by hana at 11:06| Comment(0) | TrackBack(0) | DB,SQL関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック