関係するユーザーエラーはないと判断したけれども、依然としてレプリケーションがまったく機能しないか安定しない場合は、バグレポートを送る時期です。バグを突き止めるため、できるだけ多くの情報をユーザーから入手する必要があります。優れたバグレポートを準備するために、ある程度の時間と労力を費やしてくださるようにお願いします。
そのバグをはっきりと示す再現可能なテストケースがある場合は、セクション1.6「質問またはバグをレポートする方法」で示す手順を使用してオラクルのバグデータベースに入力してくださるようにお願いします。「幽霊のような」問題 (意のままに再現できないもの) の場合は、次の手順を使用してください。
ユーザーエラーが関係していないことを確認します。たとえば、スレーブスレッド以外の場所でスレーブを更新すると、データが同期を失い、更新時に一意キー違反が発生することがあります。この場合、スレーブスレッドは停止し、ユーザーが手動でテーブルをクリーンアップして同期された状態に戻すまで待ちます。 これは、レプリケーションの問題ではありません。外部干渉の問題でレプリケーションが失敗しています。
--log-slave-updates
および--log-bin
オプションでスレーブを実行します。これらのオプションにより、スレーブはマスターから受け取る更新のログをその独自のバイナリログに記録します。-
レプリケーション状態をリセットする前のすべての証拠を保存します。情報がなかったり、不完全な情報しかなかったりすると、オラクルでは問題を突き止めることが困難または不可能になります。収集すべき証拠:
マスターからのすべてのバイナリログファイル
スレーブからのすべてのバイナリログファイル
問題を発見した時点の、マスターからの
SHOW MASTER STATUS
の出力問題を発見した時点の、スレーブからの
SHOW SLAVE STATUS
の出力マスターおよびスレーブからのエラーログ
-
mysqlbinlog を使用してバイナリログを調べます。次のことは、問題のステートメントを見つけるのに役立つはずです。
log_file
およびlog_pos
は、SHOW SLAVE STATUS
からのMaster_Log_File
およびRead_Master_Log_Pos
値です。shell> mysqlbinlog --start-position=log_pos log_file | head
問題の証拠を収集したあとは、まずそれらを個別のテストケースとして切り分けてみてください。そのうえで、セクション1.6「質問またはバグをレポートする方法」での指示を使用して問題およびできるだけ多くの情報をオラクルのバグデータベースに入力してください。