Configure uma replicação do mysql, mas novos dados não são atualizados

2

Eu configurei uma replicação do MySQL para um servidor de banco de dados existente. A configuração parece bem, mas o banco de dados nunca atualiza no servidor slave depois que eu inicio a replicação. Ambos os servidores estão usando o CentOS 5.7 de 64 bits. Eles têm espaço em disco suficiente.

Do servidor master do MySQL

mysql > mostre variáveis como 'server_id';
| server_id | 1 |

mysql > show processlist;
| 391673 | repl | mysqlslave.mydomain.com:47453 | NULL | Binlog Dump | 1453 | Enviou todo o log binário para escravo; esperando pelo binlog ser atualizado | NULL

mysql > mostre anfitriões do escravo; Conjunto vazio (0,00 seg)

mysql > mostrar status de mestre; | mysql-bin.000008 | 98 | db1, db2 |

Do servidor MySQL Slave

mysql > mostre variáveis como 'server_id';
server_id | 2

mysql > mostra status de escravo \ G;
*************************** 1. linha ******************** *******
             Slave_IO_State: Esperando pelo mestre para enviar um evento -                 Master_Host: 192.168.1.2
                Master_User: repl
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.000008
        Read_Master_Log_Pos: 98
             Relay_Log_File: escravo-relay-bin.000004
              Relay_Log_Pos: 235
      Relay_Master_Log_File: mysql-bin.000008
           Slave_IO_Running: Sim
          Slave_SQL_Running: Sim
            Replicate_Do_DB: db1; db2

log do MySQL

No servidor slave, o log de mensagens mostra isso

111031 10:53:16 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000008', position 98
111031 10:53:16 [Note] Error reading relay log event: slave SQL thread was killed
111031 10:53:16 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.000008' at position 98, relay log './slave-relay-bin.000001' position: 4
111031 10:53:16 [Note] Slave I/O thread: connected to master '[email protected]:3306', replication started in log 'mysql-bin.000008' at position 98

Atualizar

Se eu criar um novo banco de dados no servidor mestre, ele será replicado para o servidor escravo, mas os bancos de dados existentes não serão atualizados.

Última atualização

Em vez de despejar todos os bancos de dados e replicação de configuração de uma só vez, eu faço um por um e está funcionando bem agora.

    
por garconcn 31.10.2011 / 18:56

1 resposta

2

Acho que vejo o problema

Você tem o seguinte na sua pergunta:

Replicate_Do_DB: db1; db2

Isso não é uma lista separada por ponto-e-vírgula. É suposto ser uma lista separada por vírgulas.

Meu palpite é que você tem isso no /etc/my.cnf do seu escravo

replicate-do-db=db1; db2

A maneira correta de configurar isso é

replicate-do-db=db1
replicate-do-db=db2

Por favor ajuste isto no /etc/my.cnf do escravo e reinicie o mysql no escravo

Experimente!

ATUALIZAÇÃO 2011-10-31 15:20 EDT

Você pode limpar o log de retransmissão fazendo isso

STOP SLAVE;
CHANGE MASTER TO master_log_file='mysql-bin.000008',master_log_pos-98;
START SLAVE;

execute SHOW SLAVE STATUS\G e certifique-se de que a replicação está sendo executada, certificando-se de ver isso

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

assim como você postou na sua pergunta

    
por 31.10.2011 / 19:26