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

Er det muligt at lave N-master => 1-slave replikering med MySQL?

Multi-master replikering (en slave med mere end én master) understøttes ikke af MySQL (udover MySQL Cluster). Du kan lave en master-master replikering af en cirkulær (ring) replikering (beskrevet her eller her ).

I Høj ydeevne MySQL 2. udgave forfatterne beskriver en måde at emulere multi-master-replikering ved hjælp af en smart kombination af master-master-replikering og Blackhole lagermotor (Kapitel 8 Replikering> Replikeringstopologier> Tilpassede replikeringsløsninger> Emulering af multimasterreplikering s. 373 - 375 ).

De viser to mulige topologier:

Brug af to co-masters (tillader at skifte masteren af ​​slaven fra Master 1 til Master 2 )

  • Master 1: vært DB1 og replikerer DB2 fra Master 2; lagermaskinen for alle tabeller i DB2 er ændret til Blackhole så dataene ikke effektivt gemmes på Master 1 .
  • Master 2: vært DB2 og replikerer DB1 fra Master 1; lagermaskinen for alle tabeller i DB1 er ændret til Blackhole så dataene ikke effektivt gemmes på Master 2
  • Slave 1: replikerer DB1 og DB2 fra enten Master 1 eller Master 2 (tillader at skifte master); resultatet er, at Slave 1 replikerer begge databaser, der effektivt hostes på to forskellige mastere.

Brug af en master-kæde

  • Master 1: kun vært DB1
  • Master 2: vært DB2 og replikerer DB1 fra Master 1; lagermaskinen for alle tabeller i DB1 er ændret til Blackhole så dataene ikke effektivt gemmes på Master 2
  • Slave 1: replikerer DB1 og DB2 fra Master 2; resultatet er, at Slave 1 replikerer begge databaser, der effektivt hostes på to forskellige mastere.

Bemærk, at denne opsætning kun tillader dig at sende opdateringer til DB1 gennem Master 1 og opdateringer til DB2 til Master 2 . Du kan ikke send opdateringer til begge tabeller til vilkårlige mastere.

Måske er det muligt at kombinere den beskrevne løsning med hacket til en ægte master-master-replikering (tillader opdateringer til begge mastere), der bruger en form for autoincrement-mangling og er beskrevet her eller her .



  1. Hvad er det egentlig en BLOB i en DBMS sammenhæng

  2. Docker Compose + Postgres:Udsæt port

  3. Sådan sletter du duplikerede rækker og opdaterer tabellen

  4. Spring Boot, JPA-fejl:Fejl ved udførelse af DDL via JDBC-erklæring