AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 108432
Accepted
threewordphrase
threewordphrase
Asked: 2015-07-30 05:13:32 +0800 CST2015-07-30 05:13:32 +0800 CST 2015-07-30 05:13:32 +0800 CST

Topologia de replicação multimestre do MySQL

  • 772

Isenção de responsabilidade : nunca trabalhei com replicação antes, mas estou fazendo toda a minha pesquisa. Na verdade, não ter um conhecimento profundo sobre o MySQL dificulta o entendimento de grande parte da documentação.

Temos um servidor remoto e muitos servidores 'no local'. Este aplicativo é de missão crítica e, devido às conexões de internet não confiáveis ​​no local, as máquinas no local têm instâncias totalmente funcionais do aplicativo. As máquinas no local estão protegidas por vários firewalls e geralmente não conseguem acessar umas às outras. Podemos configurar túneis SSH para permitir que o banco de dados na nuvem se comunique com os bancos de dados locais.

Aqui está um diagrama simples:

insira a descrição da imagem aqui

A replicação multimestre assíncrona parece ser a melhor aposta para nós, mas a maior parte da documentação parece implicar que a replicação multifonte funciona apenas para escravos e/ou a replicação multimestre funciona apenas circularmente e um único mestre (neste caso, o servidor de nuvem) não pode replicar diretamente para vários outros mestres.

Estou interpretando isso incorretamente (simplesmente incapaz de encontrar documentação sobre como fazer isso) ou é esse o caso? Se for o caso, existem pacotes de terceiros como Tungsten ou Galera que podemos usar? No entanto, preferimos usar o MySQL mais simples possível.

Editar para esclarecer: Aqui está uma seção my.cnf que encontrei descrevendo uma configuração de 2 mestres. Eu gostaria de definir N número deles no servidor de nuvem e apenas um de cada (o servidor de nuvem) nos servidores locais. Gostaríamos de fazer tudo através de my.cnf e evitar usar/criar scripts de comandos shell do mysql.

master-host = 192.168.16.4
master-user = replication
master-password = slave
master-port = 3306
mysql replication
  • 2 2 respostas
  • 1209 Views

2 respostas

  • Voted
  1. Best Answer
    RolandoMySQLDBA
    2015-07-30T08:22:22+08:002015-07-30T08:22:22+08:00

    REPLICAÇÃO MULTIMASTER

    Se você quiser usar o Galera, basta obter o Percona XtraDB Cluster. Ele vem pronto para uso com bibliotecas Galera embrulhadas dentro. Basta colocar as opções wsrep em my.cnf para habilitar o Galera. Consulte a documentação do PXC para obter mais informações.

    Se você tiver o EC2, também poderá usar o PXC Setup Guide no EC2 .

    REPLICAÇÃO MULTIFONTE

    a replicação multi-fonte só funciona para escravos

    Isto está certo. A terminologia se encaixa no que diz. É um escravo que pode replicar a partir de vários mestres. Isso é possível com MariaDB e MySQL 5.7

    Se você deseja executar a replicação de várias fontes com o MySQL 5.1/5.5/5.6 vanilla (mais como sem açúcar), será necessário configurar o como round robin. Página 227.228 do Livro (ISBN 0596807309)

    Alta disponibilidade do MySQL

    tem o algoritmo para fazer a replicação de várias origens robin robin

    1. Configure o escravo para replicar a partir de um mestre. Chamaremos isso de master atual .
    2. deixe o escravo replicar por um período fixo no tempo. O escravo irá ler do mestre atual e aplicá-los enquanto o cliente responsável por lidar com o switch apenas dorme.
    3. Pare o thread de E/S do escravo usando STOP SLAVE IO_THREAD.
    4. Aguarde até que o registro de retransmissão esteja vazio.
    5. Pare o thread SQL usando STOP SLAVE SQL_THREAD. CHANGE MASTER requer que você interrompa os dois encadeamentos.
    6. Salve a posição do escravo para o mestre atual salvando os valores das colunas Exec_Master_Log_Pos e Relay_Master_Log_File da saída SHOW SLAVE STATUS.
    7. Altere o escravo para replicar a partir do próximo mestre em sequência, tomando as posições salvas anteriormente e usando CHANGE MASTER para configurar a replicação.
    8. Reinicie os threads escravos usando START SLAVE.
    9. Repita a sequência a partir do passo 2.

    Escrevi um post sobre essa técnica antes de ler o livro

    • Apr 26, 2011: MySQL em topologia em estrela (StackOverflow)
    • Apr 28, 2011: MySQL em topologia em estrela (ServerFault)

    A propósito, as páginas 228.229 do livro têm código de amostra em Python

    REPLICAÇÃO do MySQL

    Por favor, não coloque as opções para conectar a replicação em my.cnf.

    Eles estão obsoletos desde o MySQL 5.5

    Diz isso na documentação do MySQL 5.6 sob o título

    Opções de Escravo de Replicação Obsoletos

    As opções a seguir foram removidas no MySQL 5.5. Se você tentar iniciar o mysqld com qualquer uma dessas opções no MySQL 5.6, o servidor abortará com um erro de variável desconhecida. Para definir os parâmetros de replicação anteriormente associados a essas opções, você deve usar a instrução CHANGE MASTER TO ... (consulte a Seção 13.4.2.1, “Sintaxe CHANGE MASTER TO”).

    As opções afetadas são mostradas nesta lista:

    --master-host

    --master-user

    --senha mestra

    --master-port

    --master-connect-retry

    --master-ssl

    --master-ssl-ca

    --master-ssl-capath

    --master-ssl-cert

    --master-ssl-cipher

    --master-ssl-key

    • 0
  2. threewordphrase
    2015-07-31T06:40:51+08:002015-07-31T06:40:51+08:00

    Para qualquer pessoa com um problema semelhante, acabei optando pelo MariaDB, que oferece suporte a vários mestres por nó (variável connection_name ao especificar CHANGE MASTER TO). O MySQL suporta isso supostamente começando em 5.7, mas não queremos esperar por esse lançamento.

    • 0

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve