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


64

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

回答:


81

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

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

レプリケーションが動的にセットアップされる場合、ステップ1と2で十分です。
tanyehzheng

4
MySQLが再起動されるまでSLAVE STATUSRESET SLAVEコマンドが与えられた後でもクエリに関する古いレプリケーション情報を報告します。監視またはリモート構成管理ツールについて知っておくことが重要です。CentOS 6.5上のMySQL 5.5.38で確認された動作。
クリスラスキー14

手順を実行しますが、その非アクティブなスレーブがまだmtopコマンドのリストにあるのはなぜですか?リストから削除する方法は?
スコットチュー

18

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

変更MASTERMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

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

SHOW SLAVE STATUS \G;

5
これはもう機能しません。設定CHANGE MASTER TO MASTER_HOST=''するとエラーがスローされるようになりました。
グレー

エラー1210(HY000):MASTER_HOSTの引数が正しくありません
Kazimieras Aliulis 14

CentOS 6(MySQL 5.1)では、このSHOW SLAVE STATUSが空のセットを返した後、RESET SLAVEの後でもいくつかのマスター情報が表示されます。
マーティン

この回答は、MySQL 5.1ユーザーに有効です(まだ存在する可能性があります)。
RolandoMySQLDBA

12

スレーブサーバー:

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

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

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


7

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

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

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

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


6

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ファイルにその構成情報が含まれていないことも確認する必要があります。そうしないと、サーバーの次回の再起動時にロギングが再度有効になります。


5

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


4

これをHarrison Fiskの回答に追加しています。

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

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

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

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

alter event <event_name> enable;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.