[GTER] Freeradius - MySQL replication

Daniel Vasconcelos vdaniel at tcheturbo.com.br
Fri Dec 12 10:05:39 -02 2014


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




More information about the gter mailing list