Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


17.4.1.26 レプリケーション中のスレーブエラー

ステートメントがマスターとスレーブの両方で同じエラー (同じエラーコード) を返した場合、エラーログは記録されますが、レプリケーションは継続します。

ステートメントがマスターとスレーブで異なるエラーを返した場合、スレーブ SQL スレッドは終了し、スレーブはそのエラーログにメッセージを書き込み、データベース管理者がそのエラーについて何をするかを決めるまで待ちます。これには、ステートメントがマスターまたはスレーブ上で (両方ではなく) エラーを返した場合が含まれます。この問題に対処するには、手動でスレーブに接続して問題の原因を判断してください。これには、SHOW SLAVE STATUS が役立ちます。それから問題を解決して START SLAVE を実行してください。たとえば、スレーブを再起動する前に、存在しないテーブルの作成が必要な場合があります。

このエラーコード検証動作が望ましくない場合は、--slave-skip-errors オプションでエラーの一部またはすべてを隠す (無視する) ことができます。

MyISAM などの非トランザクションストレージエンジンの場合、テーブルを不完全に更新してエラーコードを返すだけのステートメントが存在する場合があります。これはたとえば、1 つの行がキー制約に違反する複数行挿入で、または長い更新ステートメントが一部の行を更新したあとに強制終了された場合に発生する可能性があります。これがマスター上で発生した場合は、スレーブはステートメントの実行を予期しますが、同じエラーコードで終了します。そうしない場合は、スレーブ SQL スレッドはすでに説明したように停止します。

マスターおよびスレーブ上で異なるストレージエンジンを使用するテーブル間で複製する場合、同じステートメントが、一方のバージョンのテーブルに実行し、もう一方で実行しないときに異なるエラーを返したり、一方のバージョンのテーブルでエラーが発生し、もう一方では発生しなかったりすることがあることに留意してください。たとえば、MyISAM は外部キー制約を無視するため、マスター上の InnoDB テーブルにアクセスする INSERT または UPDATE ステートメントで外部キー違反が発生することがあっても、スレーブ上の MyISAM バージョンの同じテーブルで実行された同じステートメントはこのようなエラーを返さずにレプリケーションが停止します。