MySQLレプリケーションの注意点

MySQLの標準機能を使用したレプリケーション中に実行してはいけないSQLがあることが判明。
下記サイトで詳細は書いてあるのですが、
現場指向のレプリケーション詳説


以下のパターンも駄目。


●マスタに対してRESTORE
例)RESTORE TABLE user FROM '/var/tmp/user_data';
【理由】
この場合はなぜ駄目かというと、
レプリケーションはマスタに対して発行されたDDLをロギングしており、
その情報をスレーブへ送ることで同期を取っています。


RESTOREコマンドの場合は、ロギングされないようでレプリケーション側にDDLデータが送られないた
めか、
マスタ-スレーブ間でデータの整合性が取れなくなり、
レプリケーションが停止することがあります。


【対応策】
RESTOREしたテーブルに対して更新処理をする前に、
スレーブ側にも同一コマンドを実行して、スレーブのslaveサービスを再起動すれば復旧できる。
(ただし、やはり整合性を取ることが困難なので、再度データをコピーした方が良いと思われる)