sql >> Databáze >  >> RDS >> Mysql

Je možné provést replikaci N-master => 1-slave s MySQL?

Multi-master replikace (slave s více než jedním masterem) není podporována MySQL (kromě MySQL Cluster). Můžete provést master-master replikaci kruhové (kruhové) replikace (popsaná zde nebo zde ).

V Vysoce výkonné MySQL 2. vydání autoři popisují způsob, jak emulovat multi-master replikaci pomocí chytré kombinace master-master replikace a Blackhole storage engine (Kapitola 8 Replikace> Replikační topologie> Vlastní řešení replikace> Emulování replikace s více mastery str. 373–375 ).

Zobrazují dvě možné topologie:

Použití dvou spolumasterů (což umožňuje přepnout master podřízeného z Master 1 na Master 2 )

  • Hlavní 1: hostitelé DB1 a replikuje DB2 z Master 2; modul úložiště pro všechny tabulky v DB2 se změní na Blackhole aby data nebyla efektivně uložena na Master 1 .
  • Hlavní 2: hostitelé DB2 a replikuje DB1 z Master 1; modul úložiště pro všechny tabulky v DB1 se změní na Blackhole aby data nebyla efektivně uložena na Master 2
  • Slave 1: replikuje DB1 a DB2 buď z Master 1 nebo Master 2 (umožňující přepínání masterů); výsledkem je Slave 1 replikuje obě databáze, které jsou efektivně hostovány na dvou různých hlavních serverech.

Použití hlavního řetězce

  • Hlavní 1: pouze hostitelé DB1
  • Hlavní 2: hostitelé DB2 a replikuje DB1 z Master 1; modul úložiště pro všechny tabulky v DB1 se změní na Blackhole aby data nebyla efektivně uložena na Master 2
  • Slave 1: replikuje DB1 a DB2 z Master 2; výsledkem je Slave 1 replikuje obě databáze, které jsou efektivně hostovány na dvou různých hlavních serverech.

Upozorňujeme, že toto nastavení umožňuje odesílat aktualizace pouze do DB1 přes Hlavní 1 a aktualizace DB2 na Master 2 . Nemůžete posílat aktualizace do kterékoli tabulky libovolným masterům.

Možná je možné zkombinovat popsané řešení s hackem pro skutečnou replikaci master-master (umožňující aktualizace obou masterů), která používá nějaký druh autoincrement-manglingu a je popsána zde nebo zde .



  1. Přečtěte si vzor char,double,int z řetězce v sql

  2. Získávání dat hierarchie ze samoodkazujících tabulek

  3. Nejběžnější scénáře selhání PostgreSQL

  4. ORA-00903:neplatný název tabulky na PreparedStatement