Um escravo do MySQL pode ser um mestre ao mesmo tempo?

17

Estou migrando 2 servidores de banco de dados (Master e Slave) para dois novos servidores de banco de dados (Master e Slave)

DB1 - Mestre (produção)

DB2 - Escravo (produção)

DB3 - Novo mestre

DB4 - Novo escravo

Atualmente, tenho a replicação configurada como:

DB1 -> DB2
DB3 -> DB4

Para que os dados de produção sejam replicados para os novos servidores, eu gostaria de "encadear em cadeia" para que fique assim:

DB1 -> DB2 -> DB3 -> DB4

Isso é possível? Quando executo show master status;no DB2 (o escravo de produção), a posição do binlog nunca parece mudar:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| Arquivo | Posição Binlog_Do_DB Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Estou um pouco confuso sobre o motivo pelo qual a posição do binlog não está mudando no DB2. Idealmente, será o mestre do DB3.

mmattax
fonte

Respostas:

9

Sim, é possível :) Isso é chamado de replicação "Master with Relay Slave" e há muitos documentos sobre isso na rede.

Eu recomendo que você dê uma olhada na documentação oficial aqui .

Aliás, também dê uma olhada nesses slides . Eles têm algumas dicas sobre topologias de replicação.

Espero que isto ajude.

Marco Ramos
fonte
3

sim - você pode conectar servidores mysql em cadeia, pode até fazer uma replicação circular com duas ou mais máquinas. lembre-se de habilitar o log de bin no slave, que também atua como mestre.

pQd
fonte
11
A replicação circular é incrivelmente frágil. É desaconselhável na maioria das circunstâncias.
Warner
@ Warner - este foi apenas um exemplo de configuração de replicação ainda mais complicada.
pQd 25/05
Amigos não deixam servidores mysql em cadeia de amigos.
S22 /
@sjas, a menos que tenham um motivo muito específico para fazê-lo e compreendam as possíveis consequências de quebrar a cadeia.
PQD
Desculpe, mas ainda não. A complexidade sempre o assombra mais tarde.
S23 /
0

Sim, é possível. Realisticamente, você precisa de uma nova captura instantânea do DB2 para construir o DB3. Nesse ponto, se você tiver uma boa posição, poderá usar o que para o DB4 ou tirar outro instantâneo do DB3.

Não se esqueça de definir exclusivo server_idpara cada servidor.

Alto desempenho O MySQL é um ótimo livro para referenciar uma administração MySQL mais avançada.

Warner
fonte
Atualmente, o DB2 é apenas um escravo, mas sua posição no binlog não está mudando ... Você sabe se isso é normal?
Mmattax
O escravo (DB2) está atualizado com o mestre, mas a posição do binlog não está mudando, o que devo verificar?
Mmattax
Sim, confirmei que posso alterar os dados no DB1 e eles são replicados para o DB2, mas a posição do binlog do DB2 é a mesma.
Mmattax
Acho DB @ não está registrando as atualizações de escravos, daí porque a posição não está mudando: dev.mysql.com/doc/refman/5.1/en/...
mmattax
0

Por que não adicionar DB3 como um novo escravo e promovê-lo a dominar quando estiver pronto para fazer a troca? Isso daria a você o benefício adicional temporário de ter vários escravos e reduzir ou eliminar seu tempo de inatividade.

phuzion
fonte
Isso é exatamente o que estou fazendo ...
mmattax