sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag synkronisera två MySQL-tabeller som har samma strukturer och olika server

Det finns några alternativ. En är att ställa in replikering inom MySQL, som automatiskt kommer att kopiera data fram och tillbaka mellan servrarna och hålla dem synkroniserade automatiskt, med en granularitet på några sekunder när data flyger runt. Nackdelen är att du måste exponera åtminstone huvudservern för nätet för att tillåta TCP-anslutningar.

Externt kan du göra vanliga mysqldumps på server A, kopiera till server B, ladda in i mysql och köra iväg. Detta kommer att ha en granularitet av vilket tidsintervall du än kör dump-/kopierings-/laddningssekvensen i. Nackdelen är att mysqldump låser tabeller när det fungerar. Om du har en stor databas kommer du att låsas ute från serverA:s tabeller medan dumpningen fortskrider, och låsas ute från serverB när data laddas. Och att ladda en dump är mycket långsammare än att göra dumpningen i första hand, eftersom mysql gör alla typer av intern hushållning (nyckeluppdateringar, uppdateringar av tabellmetadata, etc...) under laddningen.

För det tredje alternativet kan du skriva en synkroniserare som jämför rader mellan de två databaserna och gör uppdateringar vid behov. Men då slurpar du innehållet på en server till den andra och gör rad-för-rad-operationer. Plus att behöva hantera alla beroende uppdateringar av främmande nyckel/barnrelationer också, och detta kommer att bli komplicerat i en hast. Då kan det vara bättre att använda alternativet mysqldump istället.

Självklart ska du uppgradera din MySQL till något mer modernt. v4.x är mycket föråldrad. Du bör köra minst en 5.0, helst en 5.1-version istället.




  1. Installera Laravel på en Mac php artisan migreringsfel:Ingen sådan fil eller katalog

  2. Skillnader mellan MySQL och SQL Server

  3. Den angivna nyckeln var för lång; max nyckellängd är 1000 byte

  4. php läser mysql bitfältet returnerar konstig karaktär