É possível configurar o MySql Replication para que um escravo escute dois mestres diferentes?
fonte
É possível configurar o MySql Replication para que um escravo escute dois mestres diferentes?
Por design, um processo mysqld não pode ouvir simultaneamente dois mestres diferentes.
O comando CHANGE MASTER TO permite apenas definir um mestre como fonte para leitura.
Para imitar isso, você teria que alternar entre os dois mestres programaticamente. Como você faz isso ?
Aqui está a ideia básica
Replicação de instalação de M1 para S1 e M2 para S1 como este
Cada vez que você alterna de um mestre para outro, é necessário registrar dois valores de SHOW SLAVE STATUS\G
Esses dois valores representam a última instrução SQL que veio do mestre e foi a próxima a ser executada no escravo.
Há um grande cuidado: enquanto M1 e M2 estão atualizando bancos de dados mutuamente exclusivos, esse algoritmo deve estar bem.
A solução da Rolando tem muitas ressalvas. O primeiro é que um fluxo de réplica não está necessariamente replicando enquanto o outro funciona. Isso lhe dará períodos de tempo em que seu escravo está fora de sincronia. Agora você precisa executar um ato delicado de equilíbrio para garantir que cada um tenha tempo suficiente para recuperar o atraso quando tiver sua "vez".
Conforme descrito, você também deve desempenhar o papel de guarda-livros das posições dos registros para retornar. Isso realmente parece com erros, abrir a janela para dados ausentes ou inconsistentes ou até interromper a replicação quando ocorrer um erro (causado por um erro apenas 'desligado por um' na posição do log)
Eu recomendaria apenas executar várias instâncias mysql. Não há nada que o impeça de executar dois ou mais mysql na mesma máquina. Ambos não podem operar na mesma porta, é claro. Eu realmente não vejo isso como um problema, pois cada cliente e biblioteca permite que você especifique algo diferente de 3306.
Basta especificar a porta = 3307 (ou qualquer outro dos arquivos .cnf).
Você também deve tomar cuidado para garantir que os buffer pools configurados individualmente e outras configurações de memória não estejam em desacordo. Isso é realmente um benefício, pois você pode ajustar essas configurações com mais precisão aos requisitos específicos dos bancos de dados individuais que estão sendo replicados.
Dessa forma, você apenas tem dois fluxos de replicação em execução no mesmo servidor; nunca atrasado, não é necessário manter livros, não é necessário script de "troca".
fonte
Fan in (replicação multi-fonte) será suportado no MySQL 5.7.
Uma versão do laboratório está disponível aqui: http://labs.mysql.com/
fonte
O MariaDB, que pode ser usado como substituto no local para o MySql, pode ser usado. Ele suporta a partir da versão 10.2
O problema com o suporte ao Mysql 5.7 é a necessidade de GTID, o que significa que o mestre também deve ser alterado. No caso do MariaDb, esse não é o caso.
Exemplo / Link HowTo: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100
fonte