マスターが失敗したマスター->スレーブ構成があります。私は古いスレーブをマスターに、古いマスターをスレーブにリセットすることができました。いいよ.
私ができていないように見えるのは、現在新しいマスターである古いスレーブのマスター情報を削除することです。そうですか:
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 10.1.2.101
Master_User: replicationSlave
Master_Port: 3306
...
Slave_IO_Running: No
Slave_SQL_Running: No
私は多くの MySQLドキュメント を読みましたが、まだ新しいマスターからスレーブ情報をクリアする方法を見つけていません。私はもう試した:
RESET SLAVE
は、これらの設定をクリアしていないようです。 [[実際には、master.info
ファイルは削除されますが、メモリ設定は削除されません。下記参照。]]CHANGE MASTER TO MASTER_Host=''
は、最近サポートが終了したため、エラーが発生しただけです。my.cnf
を確認しています。RESET MASTER
いくつかのmysqlドキュメントで推奨されているため。これは、binログのみをリセットします。MySQL〜5.5.9でこれを行う適切な方法は何ですか?助けてくれてありがとう。
編集:
したがって、@ RolandoMySQLDBAが暗示するように、RESET SLAVE
はmaster.info
ファイルを削除することがわかります。ただし、スレーブ情報を削除する前に、サーバーを再起動する必要があります。
このスレーブ情報を削除する方法はありますかなし mysqldを再起動する必要がありますか?
MySQL 5.5.16以降では、RESET SLAVE ALL
を使用してRESET SLAVE
が行うすべてのことを実行できますandメモリから接続パラメーターをリセットします。この方法では、 mysqldの再起動。
MySQLインスタンスからスレーブ情報をクリアする最も速くて汚い方法
skip-slave-start
を[mysqld]
の下の/etc/my.cnfに追加しますservice mysql stop
rm -f /var/lib/mysql/master.info /var/lib/mysql/relay-*
service mysql start
skip-slave-start
を削除しますそれでうまくいくはずです!!!
MySQLドキュメンテーションRESET SLAVE
によると、これは必要です。
MySQL 5.5では(MySQL 5.1以前の場合とは異なり)、RESET SLAVEは、メモリーに保持されているマスターホスト、マスターポート、マスターユーザー、マスターパスワードなどのレプリケーション接続パラメーターを変更しません。これは、RESET SLAVEの後にCHANGE MASTER TOステートメントを必要とせずに、START SLAVEを発行できることを意味します。
したがって、レプリケーション情報はまだメモリ内にあります。 mysqlの再起動が唯一の方法です。
RESET SLAVE
に続いて再起動しても、phpmyadminに関する限り、スレーブ情報は消去されません。 CHANGE MASTER TO MASTER_Host=''
も設定する必要があります。
マスタースレーブデータの上書きを避けるために、「mysqld」の下の構成ファイル(「/etc/my.cnf」内)でskip-slave-startコマンドを維持することをお勧めします。例として、クラウド環境で作業しているときに、古いマスターがクラッシュし、プロバイダーが問題を修正したときに正常に再起動するとします。古いスレーブ(現在は新しいマスター)は古いマスターから複製し、以前のデータを上書きします。 DBAはこれを実現する機会があります。
ところで、これは非クラウド環境にも関係があります。たとえば、別の管理者が調整せずに古いマスターを起動したとします。また、スレーブであっても「skip-slave-start」コマンドを維持することをお勧めする別の問題–自動レプリケーションがないため、予期しない結果を防ぐための制御が強化されます。 :)