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

Hvilket er den bedste måde at tovejssynkronisere dynamiske data i realtid ved hjælp af mysql

Der er ikke meget ydeevne at hente ved at replikere din database på to mastere. Der er dog en god del failover, hvis du koder dit program korrekt.

Master-Master-opsætningen er i det væsentlige den samme som Slave-Master-opsætningen, men har både slaver startet og en vigtig ændring af dine konfigurationsfiler på hver boks.

Master MySQL 1:

auto_increment_increment = 2
auto_increment_offset = 1 

Master MySQL 2:

auto_increment_increment = 2
auto_increment_offset = 2

Disse to parametre sikrer, at når to servere af en eller anden grund kæmper om en primær nøgle, dublerer de ikke og dræber replikationen. I stedet for at stige med 1, vil ethvert felt med automatisk stigning som standard øges med 2. På den ene boks starter den offset fra 1 og kører sekvensen 1 3 5 7 9 11 13 osv. På den anden boks starter den offset ved 2 og løb langs 2 4 6 8 10 12 osv. Fra den aktuelle test ser den automatiske stigning ud til at tage det næste ledige nummer, ikke et der er gået før.
F.eks. Hvis server 1 indsætter de første 3 poster (1 3 og 5), når server 2 indsætter den 4., vil den få nøglen 6 (ikke 2, som efterlades ubrugt).

Når du har konfigureret det, skal du starte dem begge op som slaver.
For at kontrollere, at begge fungerer ok, skal du oprette forbindelse til begge maskiner og udføre kommandoen SHOW SLAVE STATUS og du skal bemærke, at både Slave_IO_Running og Slave_SQL_Running skal begge sige "JA" på hver boks.

Derefter skal du selvfølgelig oprette et par poster i en tabel og sikre dig, at den ene boks kun indsætter primære nøgler med ulige numre, og den anden kun øger lige numre.

Udfør derefter alle testene for at sikre, at du kan udføre alle standardapplikationerne på hver boks, mens den replikerer til den anden.

Det er relativt enkelt, når det først er i gang.
Men som det er blevet nævnt, fraråder MySQL det og råder dig til at sikre, at du er opmærksom på denne funktionalitet, når du skriver din applikationskode.

Rediger: Jeg formoder, at det teoretisk er muligt at tilføje flere mastere, hvis man sikrer sig, at forskydningerne er korrekte og så videre. Du kan dog mere realistisk tilføje nogle ekstra slaver.



  1. Sådan konverteres et Unix-tidsstempel til en dato/tidsværdi i PostgreSQL

  2. Sådan tilføjes en fremmednøglebegrænsning til en eksisterende tabel i SQL Server (T-SQL)

  3. DSN-filer og IRI-software

  4. Hvordan kan jeg oprette en begrænsning for at kontrollere, om en e-mail er gyldig i postgres?