MySQLのレプリケーションで、稼動中のマスターDBからスレーブDBに
データをコピーし、レプリケーションを開始したところ
ところどころで、error 1060 プライマリーキーの重複などのエラーがでました。
最初は、
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE SQL_THREAD;
として、処理を再開していましたが、大量に出てきてこりゃ手に負えないわということで
my.cnf に以下を追記し再起動
[mysqld]
slave-skip-errors=1060
一応、今のところ問題なくレプリケーションしてます。
そもそも、稼動中のMySQLのレプリケーションのやり方を詳しく説明しているのを見つけることができず
とりあえずで、以下の手順でスレーブを作りました。
(1)マスターをコピーして、スレーブに移動
(2)マスターのバイナリーログをながめてレプリケーション開始のポジションを決める。
(3)スレーブの設定に slave-skip-errors をセットして問題ないエラーを回避する
マスターをシャットダウン(テーブルロック)できたら、こんなことにはならなかったと思うのですが
まぁ、止めたくなかったのでコピーを稼動中にするはめに。
更新処理がどんどん進めば、スレーブのデータのずれも
上書きされて、まぁ問題ないかと。
スレーブは基本参照用に使うつもりなので
致命的なデータのずれさえなければ、そんなに整合性にはこだわらなくても
いいのかとおもいます。マスターとの同期に時間的なずれがそもそもあるしね。
0 件のコメント:
コメントを投稿