[GTER] Freeradius - MySQL replication
Rodrigo Brito
rodrigobrito at bsd.com.br
Fri Dec 12 11:38:39 -02 2014
Olá Daniel,
Não sei qual o tamanho do banco, mas a maneira mais simples de resolver
isso é reiniciando os contadores de log binário, tanto do MASTER como do
SLAVE. Para isso é necessário fazer um DUMP do Master e restaurar no Slave.
Para reiniciar os contadores, utilize o:
SLAVE> reset slave;
MASTER> reset master;
(nota: este procedimento irá remover todos os arquivos binários criados até
o momento)
Logo restaure o banco no servidor SLAVE e se possível utilize o mysqlcheck
(ou myisamchk com o banco offline) em ambos os bancos para verificar a
consistência das tabelas. Reinicie o MySQL em ambos os servidores e esteja
certo de que as configurações de replicarão estão gravadas no arquivo
my.cnf para que o processo de replicação inicie automaticamente.
Novamente, este é um jeito casca grossa de retomar a replicação!!
Abs.
2014-12-12 10:05 GMT-02:00 Daniel Vasconcelos <vdaniel at tcheturbo.com.br>:
> E aí galera!
> Seguinte, to montando uma máquina para "espelhar" o meu servidor radius,
> porém, estou tendo um problema com o MySQL. As configurações do freeradius
> em si estão todas corretas (fiz testes de autenticação e funcionou
> perfeitamente). Porém, o meu problema começa quando eu estou replicando o
> banco de dados.
>
> Tenho o servidor MASTER e o SLAVE, sendo que:
> Master: rodando o serviço freeradius e consequentemente o banco de dados;
> Slave: rodando o serviço freeradius e consequentemente o banco de dados;
>
> A configuração do arquivo "/etc/mysql/my.cnf" em ambas as máquinas está
> assim:
>
>
> ## MASTER
> server-id = 1
> log_bin = /var/log/mysql/mysql-bin.log
> expire_logs_days =10
> max_binlog_size = 100M
> binlog_do_db = radius
>
> ## SLAVE
> server-id = 2
> log_bin = /var/log/mysql/mysql-bin.log
> relay-log = /var/log/mysql/mysql-relay-bin.log
> log-slave-updates = 1
> expire_logs_days = 10
> max_binlog_size = 100M
> binlog_do_db = radius
>
> A partir disso, para que a replicação acontecesse, efetuei os seguintes
> procedimentos (partindo do princípio de que a questão de usuários já
> estejam configurados):
>
> No servidor MASTER:
> Travei as tabelas como somente leitura;
> Peguei a posição do arquivo bin (show master status;);
> Fiz a exportação da base para o servidor slave;
>
> No servidor SLAVE:
> Fiz a importação da base;
> Executei o comando no mysql: CHANGE MASTER TO MASTER_HOST='meuhost',MASTER_USER='replication',
> MASTER_PASSWORD='senha', MASTER_LOG_FILE='mysql-bin.000006',
> MASTER_LOG_POS= 74949498;
> Em seguida: slave start;
>
> A partir dai, tudo estava correndo bem, até que na manhã seguinte, cheguei
> no trabalho e fui verificar como estava a replicação.
> No MySQL do servidor slave digitei o comando: show slave status\G;
> Para minha felicidade estava tudo certo até então. Porém, mais tarde, fui
> verificar novamente o status, e me deparei com um erro:
>
> mysql> show slave status\G;
> *************************** 1. row ***************************
> Slave_IO_State: Waiting for master to send event
> Master_Host: meuhost
> Master_User: replicator
> Master_Port: 3306
> Connect_Retry: 60
> Master_Log_File: mysql-bin.000009
> Read_Master_Log_Pos: 50811963
> Relay_Log_File: mysql-relay-bin.000003
> Relay_Log_Pos: 244
> Relay_Master_Log_File: mysql-bin.000001
> Slave_IO_Running: Yes
> Slave_SQL_Running: No
> Replicate_Do_DB:
> Replicate_Ignore_DB:
> Replicate_Do_Table:
> Replicate_Ignore_Table:
> Replicate_Wild_Do_Table:
> Replicate_Wild_Ignore_Table:
> Last_Errno: 1194
> Last_Error: Error 'Table 'radacct' is marked as crashed
> and should be repaired' on query. Default database: 'radius'. Query:
> 'UPDATE radacct SET framedipaddress = '10.10.4.5',
> acctsessiontime = '53400', acctinputoctets = '0' <<
> 32 | '40914351', acctoutputoctets =
> '0' << 32 | '362241158' WHERE
> acctsessionid = '810033f5' AND username = 'jaguar'
> AND nasipaddress = '10.54.2.5''
> Skip_Counter: 0
> Exec_Master_Log_Pos: 98
> Relay_Log_Space: 725792285
> 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: NULL
> Master_SSL_Verify_Server_Cert: No
> Last_IO_Errno: 0
> Last_IO_Error:
> Last_SQL_Errno: 1194
> Last_SQL_Error: Error 'Table 'radacct' is marked as crashed
> and should be repaired' on query. Default database: 'radius'. Query:
> 'UPDATE radacct SET framedipaddress = '10.10.4.5',
> acctsessiontime = '53400', acctinputoctets = '0' <<
> 32 | '40914351', acctoutputoctets =
> '0' << 32 | '362241158' WHERE
> acctsessionid = '810033f5' AND username = 'jaguar'
> AND nasipaddress = '10.54.2.5''
> Replicate_Ignore_Server_Ids:
> Master_Server_Id: 1
> 1 row in set (0.00 sec)
>
> ERROR:
> No query specified
>
>
> Bom, estou preocupado, pois não tenho experiência com replicação do MySQL,
> mas li bastante sobre e fui surpreendido com esta inconsistência de
> informação. Alguém saberia explicar um possível motivo de isso ter
> acontecido? E a partir disso, como posso revidar? Devo fazer o processo de
> exportação/importação novamente?
>
> Atenciosamente
> --
> Daniel Vasconcelos
> IT Analyst
>
> --
> gter list https://eng.registro.br/mailman/listinfo/gter
>
--
Atenciosamente,
Rodrigo Brito
More information about the gter
mailing list