Replicação MariaDB não reconectando automaticamente

1

Eu tenho uma configuração simples de replicação mestre-escravo entre dois servidores MariaDB 5.5. A conexão entre os servidores é um pouco esquisita, causando desconexões de vez em quando.

No entanto, "master_retry_count = 0" é definido em my.ini no escravo, o que, no meu entender, significa que o escravo deve continuar tentando se reconectar ao mestre sempre que ocorrer uma desconexão, portanto não deve haver nenhum principais problemas com uma conexão escamosa.

Eu experimentei a replicação parar, no entanto, algumas vezes com o seguinte erro:

The slave I/O thread stops because SET @master_heartbeat_period on master failed. Error: Lost connection to MySQL server during query

Quando eu notei isso, a replicação tem estado muitas vezes no estado parado por horas, e simplesmente a emissão de uma consulta "START SLAVE" torna as coisas boas novamente, mas não estou entendendo por que esse problema ocorre em primeiro lugar.

Alguém poderia ter alguma experiência ou ser capaz de lançar alguma luz sobre isso? Existe alguma maneira de garantir que a replicação não pare devido a um problema de conexão temporária?

Aqui está um log de amostra com o erro:

130710  2:42:29 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
130710  2:42:30 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000341' at position 20051884
130710  2:56:26 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
130710  2:56:26 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000341' at position 20523725
130710  2:57:04 [ERROR] Slave I/O: error reconnecting to master 'rep_user@master_server:3306' - retry-time: 60  retries: 0  message: Lost connection to MySQL server at 'reading au
thorization packet', system error: 0, Error_code: 2013
130710  2:58:05 [Note] Slave: connected to master 'rep_user@master_server:3306',replication resumed in log 'mysql-bin.000341' at position 20523725
130710  3:26:31 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
130710  3:26:31 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000341' at position 20893274
130710  3:27:48 [ERROR] Slave I/O: error reconnecting to master 'rep_user@master_server:3306' - retry-time: 60  retries: 0  message: Lost connection to MySQL server at 'reading authorization packet', system error: 0, Error_code: 2013
130710  3:31:01 [Note] Slave: connected to master 'rep_user@master_server:3306',replication resumed in log 'mysql-bin.000341' at position 20893274
130710  3:32:19 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)
130710  3:32:19 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.000341' at position 21083757
130710  3:48:03 [ERROR] Slave I/O: The slave I/O thread stops because SET @master_heartbeat_period on master failed. Error: Lost connection to MySQL server during query, Error_code: 1593
130710  3:48:03 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000341', position 21083757

(do log acima, a conexão é realmente muito ruim; geralmente não é tão ruim, mas acontece de tempos em tempos. Fixar a conexão é obviamente ideal, mas eu também prefiro que a replicação não pare por causa de isso)

Configurações my.ini possivelmente relevantes no escravo:

master_retry_count=0
slave_sql_verify_checksum=0
slave_net_timeout=1800
net_retry_count=10

Eu não sei muito sobre o batimento cardíaco, então eu nunca o defini, mas de acordo com o status, o período de pulsação é de 900 segundos.

Obrigado pela leitura.

    
por zinga 10.07.2013 / 13:00

1 resposta

0

Parece que esse é um bug no MariaDB e no MySQL, corrigido no MySQL 5.6.

A correção no MariaDB será rastreada aqui: link

    
por 17.06.2014 / 13:14