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

Což je nejlepší způsob, jak obousměrně synchronizovat dynamická data v reálném čase pomocí mysql

Replikací databáze na dvou hlavních serverech nelze získat příliš mnoho výkonu. Pokud však aplikaci nakódujete správně, existuje šikovná část přepnutí při selhání.

Nastavení Master-Master je v podstatě stejné jako nastavení Slave-Master, ale má spuštěné oba Slave a důležitou změnu vašich konfiguračních souborů na každém boxu.

Master MySQL 1:

auto_increment_increment = 2
auto_increment_offset = 1 

Master MySQL 2:

auto_increment_increment = 2
auto_increment_offset = 2

Tyto dva parametry zajišťují, že když dva servery z nějakého důvodu bojují o primární klíč, nedojde k duplikaci a neukončení replikace. Namísto zvýšení o 1 se každé pole automatického přírůstku ve výchozím nastavení zvýší o 2. Na jednom boxu začne offset od 1 a spustí se sekvence 1 3 5 7 9 11 13 atd. Na druhém boxu začne offset na 2 a běžte po 2 4 6 8 10 12 atd. Z aktuálního testování se zdá, že automatické zvýšení zabírá další volné číslo, nikoli to, které předtím zbylo.
Např. Pokud server 1 vloží první 3 záznamy (1 3 a 5), ​​když server 2 vloží čtvrtý, bude mu přidělen klíč 6 (nikoli 2, který zůstane nevyužitý).

Jakmile to nastavíte, spusťte je oba jako Slave.
Poté, abyste ověřili, že oba fungují v pořádku, připojte se k oběma strojům a proveďte příkaz SHOW SLAVE STATUS a měli byste si uvědomit, že oba Slave_IO_Running a Slave_SQL_Running měli by oba říci „ANO“ na každém poli.

Pak samozřejmě vytvořte několik záznamů v tabulce a ujistěte se, že do jednoho pole se vkládají pouze primární klíče s lichým číslem a do druhého pouze se zvyšujícími se sudými klíči.

Poté proveďte všechny testy, abyste se ujistili, že můžete provádět všechny standardní aplikace na každé krabici s replikací na druhou.

Jakmile to jde, je to relativně jednoduché.
Jak už ale bylo zmíněno, MySQL od toho odrazuje a doporučuje, abyste na tuto funkci pamatovali při psaní kódu aplikace.

Upravit: Předpokládám, že je teoreticky možné přidat více předloh, pokud zajistíte, že offsety jsou správné a tak dále. Realističtěji však můžete přidat nějaké další otroky.



  1. Pole načítání MySQL přidává duplicitní hodnoty?

  2. Jak mohu poslat nějaký http požadavek z postgresql funkce nebo triggeru

  3. Zjistěte, zda existuje kombinace záznamů mnoho k mnoha

  4. Jak používat relaci na webových stránkách?