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

Jak mohu synchronizovat dvě tabulky MySQL, které mají stejnou strukturu a jiný server

Existuje několik možností. Jedním z nich je nastavení replikace v MySQL, která bude automaticky kopírovat data tam a zpět mezi servery a udržovat je automaticky synchronizovaná s přesností několika sekund, jak data létají kolem. Nevýhodou je, že musíte vystavit alespoň hlavní server síti, aby bylo možné připojení TCP.

Externě můžete provádět pravidelné mysqldumps na serveru A, zkopírovat na server B, načíst do mysql a můžete vyrazit. To bude mít granularitu jakéhokoli časového intervalu, ve kterém spustíte sekvenci výpisu/kopírování/načítání. Nevýhodou je, že mysqldump zamyká tabulky, jak to funguje. Máte-li velkou databázi, během výpisu budete uzamčeni z tabulek serveru A a při načítání dat budete uzamčeni ze serveru B. A načítání výpisu je mnohem pomalejší než provádění výpisu na prvním místě, protože mysql během načítání provádí všechny druhy interního úklidu (aktualizace klíčů, aktualizace metadat tabulek atd...).

Pro třetí možnost můžete napsat synchronizátor, který porovná řádky mezi dvěma databázemi a podle potřeby provede aktualizace. Potom však přehazujete obsah jednoho serveru na druhý a provádíte operace řádek po řádku. Navíc musíte také zpracovávat všechny závislé aktualizace vztahu cizího klíče/dítěte, což se ve spěchu zkomplikuje. V tom okamžiku by pro vás možná bylo lepší použít místo toho možnost mysqldump.

Samozřejmě byste měli upgradovat MySQL na něco modernějšího. v4.x je velmi zastaralý. Měli byste používat alespoň verzi 5.0, raději verzi 5.1.




  1. Získejte druhý nejvyšší plat pro každou osobu v mysql

  2. Jak mohu nastavit heslo mysql ve scénáři spuštění mysqld_safe?

  3. codeigniter přidáním IS NULL do find_in_set

  4. Jaký je nejlepší způsob, jak uniknout uživatelskému vstupu pro regulární výrazy v MySQL?