web-dev-qa-db-ja.com

MySQLレプリケーションを完全に無効にする方法

デュアルマスターMySQLレプリケーションを実行していますが、レプリケーションのない単一のデータベースに移動したいと考えています。両方のデータベースでレプリケーションを完全に無効にするにはどうすればよいですか?

64
David Collie

マスターマスターセットアップでレプリケーションを完全に無効にするには、各スレーブで次の手順を実行する必要があります。

  1. STOP SLAVE;
  2. RESET SLAVE; (使用する - RESET SLAVE ALL; MySQL 5.5.16以降の場合)
  3. My.cnfを編集し、「master -...」または「replicate -...」オプションを参照する情報(存在する場合)を削除します。レプリケーションも動的に設定できるため、my.cnfには何もない可能性があります。
  4. Mysqldを再起動します。
81
Harrison Fisk

これは古い質問であることはわかっていますが、スレーブ変数をリセットする必要があることもわかりました。提案されているように "blah"を使用すると、サーバーは起動時にサーバー 'blah'を見つけようとします。

MASTERMASTER_Host='',MASTER_USER='',MASTER_PASSWORD='';に変更します

マシンがスレーブではなくなったことを確認できます

SHOW SLAVE STATUS \G;
18
AndyW

スレーブサーバーで:

  1. レプリケーションを停止するには、「スレーブ停止」を実行します。
  2. 「スレーブのリセット」を実行して、マスターサーバーから取得したバイナリログでの位置を忘れるようにスレーブサーバーに指示します。
  3. MySQLの再起動時にレプリケーションが開始されないように、「skip-slave-start」をmy.cnfに追加します。

MySQLをマスターまたはスレーブで再起動する必要はありません。完全なドキュメントは MySQLリファレンスマニュアル のセクション19にあります。

以前の構成に戻すことにした場合に備えて、残りのレプリケーション設定はそのままにしておくことをお勧めします。そうすれば、セットアップ全体のクロスを再作成するのではなく、データをプッシュしてスレーブ位置をリセットするだけです(skip-slave-startを削除することを忘れないでください)。

12
Chris Hall

MySQLのバージョンに関係なく、これを行う最も完全な方法は次のとおりです。

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

MySQL 5.5では、RAM)でレプリケーション設定が残っているため、これは最新バージョンで機能する必要があります。

私はこの問題について同様の質問に答えました: 以前のMySQLスレーブをマスターに変更し、スレーブステータス情報を削除する方法

7
RolandoMySQLDBA

複製を無効にするには、my.cnfファイルを編集するだけでは不十分です。実際、これを有効にするための推奨される方法ではなくなりました。 my.cnfファイルにエントリを書き込むと、次回の起動時にのみ有効になり、mysqlクライアントにコマンドを入力した場合と同じように動作します。

mysql>マスターをmaster_Host = 'blah'、master_user = 'blah'、master_password = 'blah' ...に変更します。

これらの方法は両方とも、データディレクトリにmaster.infoというファイルを作成します。このファイルが存在する限り、サーバーはそこにある詳細を使用して複製を試みます。 「リセットスレーブ」最初の回答にリストされているコマンドは、master.infoファイル(およびrelay-log.infoファイル)を削除します。最初の回答で述べたように、my.cnfファイルにその構成情報がないことも確認する必要があります。そうしないと、サーバーの次の再起動時にロギングが再び有効になります。

6
Tim

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を再起動します。

5
David Collie

これをハリソンフィスクの回答に追加します。

RESET SLAVE ALL;を使用した場合、再起動は必要ありません。

さらに、スレーブで無効にされたイベントを有効にすることができます:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

それらのそれぞれについて:

alter event <event_name> enable;
4
Franc Drobnič