Uno slave MySQL può essere un master contemporaneamente?


17

Sto eseguendo la migrazione di 2 server DB (Master & Slave) a due nuovi DB Server (Master e Slave)

DB1 - Master (produzione)

DB2 - Slave (produzione)

DB3 - Nuovo master

DB4 - Nuovo slave

Attualmente ho la replica impostata come:

DB1 -> DB2
DB3 -> DB4

Per far replicare i dati di produzione sui nuovi server, mi piacerebbe farli "daisy chain" in modo che appaiano così:

DB1 -> DB2 -> DB3 -> DB4

È possibile? Quando corro show master status;su DB2 (lo slave di produzione) la proprietà binlog sembra non cambiare mai:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| File | Posizione | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Sono un po 'confuso sul perché la posizione del binlog non sta cambiando su DB2, idealmente sarebbe il master su DB3.

Risposte:



9

Sì, è possibile :) Questo si chiama replica "Master with Relay Slave" e ci sono molti documenti su di esso in rete.

Vi consiglio di dare un'occhiata alla documentazione ufficiale qui .

A proposito, dai un'occhiata anche a queste diapositive . Hanno alcuni suggerimenti sulle topologie di replica.

Spero che sia di aiuto.


3

sì - puoi server mysql a catena, puoi anche fare una replica circolare con due o più macchine al suo interno. ricorda solo di abilitare il binloging su slave che funge anche da master.


1
La replica circolare è incredibilmente fragile. È sconsigliato nella maggior parte dei casi.
Warner,

@Warner: questo era solo un esempio di configurazione della replica ancora più complicata.
pQd

Gli amici non consentono agli amici server mysql a catena.
sjas,

@sjas a meno che non abbiano una ragione molto specifica per farlo e capire le potenziali conseguenze della rottura della catena.
pQd

Scusa, ma ancora no. La complessità ti perseguita sempre più tardi.
sjas,

0

Sì, è possibile. Realisticamente, è necessario un nuovo snapshot di DB2 per creare DB3. A quel punto, se hai una buona posizione, puoi usare o per DB4 o fare un'altra istantanea di DB3.

Non dimenticare di impostare univoco server_idper ciascun server.

MySQL ad alte prestazioni è un ottimo libro per fare riferimento all'amministrazione MySQL più avanzata.


DB2 è attualmente solo uno slave, ma la sua posizione nel binlog non sta cambiando ... Sai se è normale?
mmattax,

Lo slave (DB2) è aggiornato con il master, ma la posizione del binlog non cambia, cosa devo controllare?
mmattax,

Sì, ho confermato che posso modificare i dati su DB1 ed è replicato su DB2, ma la posizione binlog di DB2 è la stessa.
mmattax,

Penso che DB @ non stia registrando gli aggiornamenti degli slave, quindi perché la posizione non sta cambiando: dev.mysql.com/doc/refman/5.1/en/…
mmattax

0

Perché non aggiungere semplicemente DB3 come nuovo slave e quindi promuoverlo come master quando sei pronto per effettuare il passaggio? Ciò ti darebbe l'ulteriore vantaggio temporaneo di avere più slave e ridurre o eliminare i tempi di inattività.


è esattamente quello che sto facendo ...
mmattax,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.