2015-04-07 13:49:53 23758 [ERROR] Slave I/O: error connecting to master 'replication'@master-Host:3306' - retry-time: 60 retries: 1, Error_code: 2005
これは、以前に実行されているレプリケーションからマスターを変更しようとした後です。唯一の変更はマスターホストでした。私がマスターに変更したかった新しい男は、同じ実際のマスターから走っています。
これはGTIDを使用しているため、auto position = 1を実行していて、master_log_fileのmaster_log_position値をいじっていませんでした。
Mysqlクライアントを介してmysql.slave_master_infoに表示されるレプリケーション資格情報を使用して、新しいマスターに接続できます。 Show Grantsは、レプリケーションスレーブが。であることを確認します
新しいマスターのエラーファイルに拒否された接続試行について何も表示されませんが、スレーブでの再試行エラー試行は表示されます。
Show slave status\Gにはこれ以上役立つものはありません
イライラした後、私はマスターを変更して古いマスターに戻しましたが、うまく動作し始めました。
これをトラブルシューティングし続ける方法に困っています。
Master_Hostを変更したら、他のすべてをやり直す必要があります
CHANGE MASTER TOに関するMySQLのドキュメント
MASTER_HostまたはMASTER_PORTオプションを指定した場合、スレーブはマスターサーバーが以前とは異なると想定します(オプションの値が現在の値と同じであっても)。この場合、古いマスターバイナリログファイルの名前と位置の値は適用されなくなったと見なされるため、ステートメントでMASTER_LOG_FILEおよびMASTER_LOG_POSを指定しない場合、MASTER_LOG_FILE = ''およびMASTER_LOG_POS = 4が暗黙的に追加されますそれ。
もう一度すべてを指定してください
STOP SLAVE;
CHANGE MASTER TO
master_Host='IP_of_new_Host',
master_port=3306,
master_user='repluser',
master_password='repluserpasswowrd',
master_heartbeat_period=1,
master_auto_position=1
;
START SLAVE;
これは クライアントエラー2005であるようです。これは「不明なホスト」です 。
ターゲットマスターをホスト名で設定した場合、そのホスト名でDNS解決の問題が示唆されますスレーブホストによる。ホスト名はスレーブマシンのOSのDNSリゾルバーを使用して解決されるため、他の場所から接続しようとしても、スレーブマシン自体のコマンドラインから接続する場合と比べて、必ずしもホスト名に接続できるとは限りません。
簡単なテストでこれを証明または反証できます。IPアドレスでマスターに接続します。動作する場合は、ホスト名を解決するときに、何らかの理由でホスト名が正しくないか、DNSが正しく機能していないことを確認します。
また、これを確認するために、スレーブではないMySQL 5.6.21マシンで次のことを試しました-私が制御するドメインでマスターを存在しないホスト名に変更し、START SLAVE IO_THREAD;
およびvoilà、この条件を複製できます。
2015-04-08 00:44:15 18140 [ERROR] Slave I/O: error connecting to master
'[email protected]:3306' - retry-time: 60
retries: 1, Error_code: 2005