it-swarm-eu.dev

Jak úplně zakázám replikaci MySQL

Používám duální replikaci MySQL a nyní se chci přesunout do jediné databáze bez replikace. Jak úplně zakázám replikaci v obou databázích?

64
David Collie

Chcete-li zcela zakázat replikaci pomocí nastavení master-master, měli byste udělat u každého slave následující:

  1. STOP SLAVE;
  2. RESET SLAVE; (Použijte RESET SLAVE ALL; pro MySQL 5.5.16 a novější)
  3. Upravte soubor my.cnf a odeberte všechny informace (pokud jsou k dispozici), které se vztahují k možnostem „master -...“ nebo „replicate -...“. Možná nemáte nic v my.cnf, protože replikaci lze také nastavit dynamicky.
  4. Restartujte mysqld.
81
Harrison Fisk

Vím, že je to stará otázka, ale zjistil jsem, že také musím resetovat proměnné otroka. Pokud používáte "bla", jak bylo doporučeno, server se při spuštění pokusí najít server 'bla'.

Změnit MASTER na MASTER_Host='',MASTER_USER='',MASTER_PASSWORD='';

Můžete si ověřit, že stroj již není otrokem

SHOW SLAVE STATUS \G;
18
AndyW

Na podřízeném serveru (serverech):

  1. Spusťte „stop slave“ pro zastavení replikace.
  2. Spusťte „reset slave“, abyste řekli slave serveru, aby zapomněl na svou pozici v binárním protokolu získaném z master serveru.
  3. Přidejte "skip-slave-start" do my.cnf, abyste zabránili spuštění replikace při restartování MySQL.

Není třeba restartovat MySQL na master ani slave. Kompletní dokumentaci najdete v sekci 19 MySQL Reference Manual .

Doporučujeme ponechat zbývající nastavení replikace na místě pro případ, že se rozhodnete vrátit se k předchozí konfiguraci. Tímto způsobem byste prostě museli dát data zpět a resetovat polohu slave (nezapomeňte odebrat skip-slave-start), spíše než znovu vytvořit celou látku.

12
Chris Hall

Bez ohledu na verzi MySQL je nejúplnějším způsobem následující

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

To musí fungovat pro jeho nejnovější verzi, protože nastavení replikace stále přetrvává v RAM pro MySQL 5.5).

Právě jsem odpověděl na podobnou otázku na toto téma: Jak změnit předchozí otrok MySQL, aby byl mistrem a odstranit informace o stavu otroka?

7
RolandoMySQLDBA

Úpravy souboru my.cnf samy o sobě nestačí k zakázání replikace. Ve skutečnosti to již není doporučený způsob, jak jej povolit. Vložení položek do souboru my.cnf je účinné pouze při příštím spuštění a chová se, jako byste zadali příkaz do klienta mysql:

mysql> změnit master na master_Host = 'bla', master_user = 'bla', master_password = 'bla' ...;

Obě tyto metody vytvoří soubor v datovém adresáři s názvem master.info. Dokud tento soubor existuje, server se pokusí replikovat pomocí tam uvedených podrobností. „RESET SLAVE;“ příkaz uvedený v první odpovědi se zbaví souboru master.info (stejně jako souboru relay-log.info). Jak je uvedeno v první odpovědi, také se chcete ujistit, že tyto konfigurační informace nemáte v souboru my.cnf, jinak bude při dalším restartu serveru protokolování znovu povoleno.

6
Tim

Jedna odpověď je zde:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Upravte konfigurační soubor MySQL: /etc/my.cnf a odeberte následujících 7 řádků do sekce s názvem [mysqld]:

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*

Restartujte MySQL.

5
David Collie

Přidávám to k odpovědi Harrison Fisk:

Pokud jste použili RESET SLAVE ALL; pak restart není nutný.

Kromě toho můžete chtít povolit události, které byly na slave deaktivovány:

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

Pro každou z nich:

alter event <event_name> enable;
4
Franc Drobnič