sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg synkronisere to MySQL-tabeller, der har samme strukturer og forskellige servere

Der er et par muligheder. Den ene er at konfigurere replikering i MySQL, som automatisk vil kopiere data frem og tilbage mellem serverne og holde dem synkroniseret automatisk, med en granularitet på få sekunder, mens dataene flyver rundt. Ulempen er, at du i det mindste skal udsætte masterserveren for nettet for at tillade TCP-forbindelser.

Eksternt kan du lave almindelige mysqldumps på server A, kopiere til server B, indlæse i mysql, og så er du i gang. Dette vil have en granularitet af det tidsinterval, du kører dump/kopier/indlæs sekvensen i. Ulempen er, at mysqldump låser tabeller, mens det fungerer. Hvis du har en stor database, vil du blive låst ude af serverA's tabeller, mens dumpet skrider frem, og låst ude af serverB, når dataene indlæses. Og at indlæse et dump er meget langsommere end at udføre dumpet i første omgang, da mysql udfører alle former for intern husholdning (nøgleopdateringer, tabelmetadataopdateringer osv...) under indlæsningen.

For den tredje mulighed kan du skrive en synkronisering, der sammenligner rækker mellem de to databaser og foretager opdateringer efter behov. Men så slurper du indholdet af den ene server over på den anden og laver række-for-række-operationer. Plus at skulle håndtere eventuelle afhængige fremmednøgle/underordnede relationsopdateringer også, og dette vil blive kompliceret i en fart. På det tidspunkt er du måske bedre stillet ved at bruge mysqldump-indstillingen i stedet.

Selvfølgelig skal du opgradere din MySQL til noget mere moderne. v4.x er meget forældet. Du bør køre mindst en 5.0, helst en 5.1 version i stedet for.




  1. Hvordan kan jeg skrive SQL i Oracle i mit tilfælde?

  2. Lad ikke Streams Pool narre dig

  3. Opdater en kolonne i MySQL

  4. MySQL enkelt citatindsættelsesfejl