デュアルマスターMySQLレプリケーションを実行していますが、レプリケーションなしで単一のデータベースに移行したいと考えています。両方のデータベースでレプリケーションを完全に無効にするにはどうすればよいですか?
デュアルマスターMySQLレプリケーションを実行していますが、レプリケーションなしで単一のデータベースに移行したいと考えています。両方のデータベースでレプリケーションを完全に無効にするにはどうすればよいですか?
回答:
マスターとマスターのセットアップでレプリケーションを完全に無効にするには、各スレーブで次を実行する必要があります。
STOP SLAVE;
RESET SLAVE;
(RESET SLAVE ALL;
MySQL 5.5.16以降で使用)SLAVE STATUS
、RESET SLAVE
コマンドが与えられた後でもクエリに関する古いレプリケーション情報を報告します。監視またはリモート構成管理ツールについて知っておくことが重要です。CentOS 6.5上のMySQL 5.5.38で確認された動作。
これは古い質問ですが、スレーブ変数もリセットする必要があることがわかりました。提案のように「blah」を使用すると、サーバーは起動時にサーバー「blah」を見つけようとします。
変更
MASTER
へMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';
マシンがスレーブではなくなったことを確認できます
SHOW SLAVE STATUS \G;
CHANGE MASTER TO MASTER_HOST=''
するとエラーがスローされるようになりました。
スレーブサーバー:
マスターまたはスレーブのいずれかでMySQLを再起動する必要はありません。完全なドキュメントは、MySQLリファレンスマニュアルのセクション19にあります。
以前の構成に戻す場合に備えて、残りのレプリケーション設定をそのままにしておくことをお勧めします。そうすれば、セットアップ全体を再作成するのではなく、データをプッシュしてスレーブ位置をリセットするだけで済みます(skip-slave-startを削除することを忘れないでください)。
MySQLのバージョンに関係なく、これを行う最も完全な方法は次のとおりです。
cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start
MySQL 5.5のレプリケーション設定はRAMに残っているため、これは最新バージョンで動作する必要があります。
私はこの主題に関する同様の質問に答えました:MySQLの以前のスレーブをマスターに変更し、スレーブステータス情報を削除する方法は?
my.cnfファイルを編集するだけでは、レプリケーションを無効にするのに十分ではありません。実際、これを有効にする推奨される方法ではなくなりました。my.cnfファイルにエントリを置くことは、次の起動時にのみ有効であり、mysqlクライアントにコマンドを入力したかのように動作します。
mysql>マスターをmaster_host = 'blah'、master_user = 'blah'、master_password = 'blah' ...に変更します。
これらのメソッドは両方とも、master.infoというファイルをデータディレクトリに作成します。このファイルが存在する限り、サーバーはそこにある詳細を使用して複製を試みます。「RESET SLAVE;」最初の回答にリストされているコマンドは、master.infoファイル(およびrelay-log.infoファイル)を取り除きます。最初の回答で述べたように、my.cnfファイルにその構成情報が含まれていないことも確認する必要があります。そうしないと、サーバーの次回の再起動時にロギングが再度有効になります。
1つの答えはこちらです。
http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm
* MySQL構成ファイル/etc/my.cnfを編集し、[mysqld]というタイトルのセクションから次の7行を削除します。
port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*
MySQLを再起動します。
これをHarrison Fiskの回答に追加しています。
使用した場合RESET SLAVE ALL;
、再起動は必要ありません。
さらに、スレーブで無効にされたイベントを有効にすることもできます。
select * from information_schema.events where status = 'SLAVESIDE_DISABLED';
それらのそれぞれについて:
alter event <event_name> enable;