マスタースレーブ設定でMySQL(5.5)を使用し、別のスレーブサーバーを作成しました。
元のスレーブを停止し、データをダンプし、コピーして再インポートしたところ、正常に機能しました。元のスレーブのmaster_log posを書き留め、これらのコマンドを使用して新しいスレーブに設定しました
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
新しいスレーブを開始したとき
Last_IO_Error:バイナリログからデータを読み取るときに、マスターから致命的なエラー1236が発生しました: 'ログイベントエントリがmax_allowed_packetを超えました。マスターのmax_allowed_packetを増やす
しかし、元のスレーブを開始したとき、それはうまく追いつき、現在同期しています。
質問:
現在の値は16Mですが、どのくらいの大きさにすればよいのかを知るには (本番サーバーでの試行錯誤は避けたいです)。
元のスレーブがうまく処理されたときに、マスターの値を増やす必要があるのはなぜですか、本当に新しいスレーブに問題があるのでしょうか?
更新
Rolandoがマスター、古いスレーブ、および新しいスレーブで提案したように、max_allowed_packetを1073741824に増やし、それらを再起動しました(SET GLOBAL max_allowed_packet = 1073741824;
何らかの理由でとらえられなかったようです)
今、最後のIOエラーは以前と同じですが、今では
Last_SQL_Error:リレーログ読み取りエラー:リレーログイベントエントリを解析できませんでした。考えられる理由は次のとおりです。マスターのバイナリログが破損している(バイナリログで「mysqlbinlog」を実行すると確認できます)、スレーブのリレーログが破損しています(リレーログで「mysqlbinlog」を実行すると確認できます)、ネットワークの問題、またはマスターまたはスレーブのMySQLコードのバグ。マスターのバイナリログまたはスレーブのリレーログを確認したい場合、このスレーブで「SHOW SLAVE STATUS」を発行することにより、それらの名前を知ることができます。
マスターのファイルでmysqlbinlogを実行すると、コマンドを使って何年も前にスクロールします-ファイルは722Mです-スレーブリレーログでそれを実行すると、
エラー:Log_event :: read_log_event()のエラー: '健全性チェックに失敗しました'、data_len:38916267、event_type:69
エラー:オフセット253のエントリを読み取ることができませんでした:ログ形式のエラーまたは読み取りエラー。
変数を確認しましたが、変更は機能しました
mysql>変数LIKE '%max_allowed_packet%'を表示します。
新しいスレーブ上でmax_allowed_packet
AND slave_max_allowed_packet
が示され、マスター上ではmax_allowed_packet
だから私はマスターでバージョンチェックをしました:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
そして新しい奴隷に
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
これらの2つのバージョンは離れすぎていますか?