Replicação mestre-escravo do MySQL não atualizando

1

Esta é minha primeira vez configurando a replicação mestre-escravo. Eu estou usando este como um guia .

Eu segui as etapas e todas as obras até a última parte, quando preciso verificar a replicação. Quando eu crio uma nova tabela e insiro alguns dados na tabela no banco de dados mestre, ela não é replicada no banco de dados escravo.

Abaixo está o my.cnf do mestre

server-id = 1
binlog-do-db = databasename
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

E o escravo my.cnf

server-id = 2
master-host=10.77.88.111
master-connect-retry=60
master-user=slave_user
master-password=slave_password
replicate-do-db=databasename
replicate-ignore-table=table1
replicate-ignore-table=table2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin

Abaixo está o SHOW SLAVE STATUS

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.77.88.111
                  Master_User: slave_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 389591
               Relay_Log_File: mysql-relay-bin.000003
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: databasename
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table: databasename.table1,databasename.table2
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 389591
              Relay_Log_Space: 120695
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)

Eu tentei:

  • acessa o banco de dados mestre da máquina escrava usando slave_user == > sucesso; então questão não está aqui
  • reiniciar o serviço mysql na máquina slave == > nenhuma mudança
  • não há erro mostrado em /var/lib/mysql/mysql.err
  • interrompa o firewall usando # service iptables stop == > nenhuma mudança

Por favor me ajude! Realmente aprecio isso!

    
por user311807 17.09.2015 / 12:38

2 respostas

2

Não há nada errado.

Aqui está como você pode dizer

INDICAÇÃO # 1: Fios Slave

Quando você executou SHOW SLAVE STATUS\G , mostra

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Isso mostra que tanto o segmento IO (intercepta os eventos de registro de logs do mestre e armazenado nos FIFOs dos relés) como o segmento SQL (lê os eventos de registro de logs dos registros de relés FIFO e executa o SQL) e conectado e executando

INDICAÇÃO # 2: Relay Logs

Quando você executou SHOW SLAVE STATUS\G , mostra

Relay_Log_Space: 120695

Isso mostra que o segmento IO leu 120K do mestre. Este valor deve estar constantemente mudando enquanto o thread IO está lendo novos eventos.

INDICAÇÃO # 3: Declarações Executadas

Quando você executou SHOW SLAVE STATUS\G , mostra

Read_Master_Log_Pos: 389591
Exec_Master_Log_Pos: 389591

Se esses valores estiverem mudando, os encadeamentos de IO estarão em posição em Read_Master_Log_Pos e o encadeamento SQL foi executado até a posição que estiver em Exec_Master_Log_Pos .

CAVEAT

Eu vejo que você tem o log binário ativado no Slave. Você não verá os logs binários crescerem no Escravo. Por quê ? Você esqueceu de adicionar atualizações do log-slave ao my.cnf do escravo.

Você teria que adicionar log-slave- atualiza para o my.cnf do Slave e reinicia o MySQL.

    
por 18.09.2015 / 19:08
1

Não há nada obviamente errado aqui.

A primeira coisa que eu faria é garantir que, ao emitir os comandos CREATE TABLE e INSERT, você esteja realmente utilizando o banco de dados databasename.

Você também pode tentar remover as restrições impostas pelo binlog-do-db, replicar-do-db etc e ver se isso ajuda.

    
por 17.09.2015 / 13:35