Problemas de replicação do Mysql

0

Eu tenho um pi de framboesa (IP.28) executando o Mysql 5.5.57 (raspbian) e o Ubuntu com o MySql 5.7.19 (IP.10)

Eu configurei a replicação para o Master - > Escravo, isso funcionou bem. Eu então tentei mudar para um mestre < - > Configuração mestre, no entanto, nenhuma alteração no banco de dados estava aparecendo na máquina do Ubuntu.

Estou tentando iniciar novamente (removendo binlogs ou alterando o caminho da pasta), mas recebo esse erro;

mysql> flush master; ERROR 1186 (HY000): Binlog closed, cannot RESET MASTER

Este é um trecho de my.cnf no rpi;

server-id               = 1
#bind-address           = 192.168.0.10
#log_bin                        = /var/log/mysql/mysql-bin1.log 
expire_logs_days        = 10 
max_binlog_size         = 100M
binlog_do_db            = example 
log_slave_updates       = 1

Como você pode ver, o log_bin está comentado. Se eu descomentar, não consigo reiniciar o serviço MySql com sucesso, recebo o seguinte erro no syslog;

Sep 11 16:08:25 raspberrypi003 /etc/init.d/mysql[9209]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed
Sep 11 16:08:25 raspberrypi003 /etc/init.d/mysql[9209]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Sep 11 16:08:25 raspberrypi003 /etc/init.d/mysql[9209]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Sep 11 16:08:25 raspberrypi003 /etc/init.d/mysql[9209]:
Sep 11 16:08:25 raspberrypi003 mysql[8373]: Starting MySQL database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . failed!
Sep 11 16:08:25 raspberrypi003 systemd[1]: mysql.service: control process exited, code=exited status=1
Sep 11 16:08:25 raspberrypi003 systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
Sep 11 16:08:25 raspberrypi003 systemd[1]: Unit mysql.service entered failed state.

Depois de recommentar a linha, posso voltar ao MySql sem erros no syslog;

pi@raspberrypi003:/var/log $ tail syslog |grep mysql
Sep 11 16:15:02 raspberrypi003 systemd[1]: Started LSB: Start and stop the mysql database server daemon.
Sep 11 16:15:02 raspberrypi003 mysql[9322]: not closed cleanly..
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9903]: Upgrading MySQL tables if necessary.
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9908]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9908]: Looking for 'mysql' as: /usr/bin/mysql
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9908]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9908]: This installation of MySQL is already upgraded to 5.5.57, use --force if you still need to run mysql_upgrade
Sep 11 16:15:02 raspberrypi003 /etc/mysql/debian-start[9919]: Checking for insecure root accounts.
Sep 11 16:15:03 raspberrypi003 /etc/mysql/debian-start[9924]: Triggering myisam-recover for all MyISAM tables

A única informação que eu encontrei on-line é sobre os comentários dizendo executar serviço sudo mysql start definitivamente não é a resposta para o meu problema.

    
por heronro 11.09.2017 / 18:23

1 resposta

0

O problema que tive foi seguir guias mais antigos para a configuração da replicação do MySql.

As seguintes opções são removidas no MySQL 5.5. Se você tentar iniciar o mysqld com qualquer uma dessas opções no MySQL 5.5, o servidor aborta com um erro de variável desconhecida. Eu experimentei isso, entre vários outros erros, enquanto tentava várias configurações diferentes. No final, eu comecei de novo e ainda tive o mesmo problema até descobrir que esses comandos são o que está causando o problema.

–master-host
–master-user
–master-password
–master-port

Solução, comente as variáveis relacionadas ao mestre.

Siga, No mestre:

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘‘; (Replace with a real password!)
mysql>FLUSH PRIVILEGES;
mysql>FLUSH TABLES WITH READ LOCK;
mysql>SHOW MASTER STATUS;
# get the DB dump.
mysql>UNLOCK TABLES;

No escravo:

# import the DB dump
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_HOST=’prod_master’, MASTER_USER=’slave_user’, MASTER_PASSWORD=’‘, MASTER_LOG_FILE=’mysql-bin.0xx‘, MASTER_LOG_POS=33421;
mysql>start slave;

Vale a pena notar que você deve ser capaz de se conectar a cada host remoto usando a opção mysql -h para testar credenciais, depois de criar usuários e conceder privilégios, não esqueça o comando flush privileges.

/var/log/mysql/error.log é seu amigo durante esses cenários de tentativa e erro. Sugiro seguir o log enquanto reinicio o MySql conforme necessário.

observe que você precisará desses registros no arquivo de configuração;

[mysqld]
log-error=/var/log/mysql/mysql.err
log-bin = /var/log/mysql/mysql-replication.log

depois de ter começado escravo; em cada host, você verá alguns dados via;

SHOW MASTER STATUS;
SHOW BINARY LOGS;

se você criar um banco de dados de exemplo e, em seguida, uma tabela;

CREATE TABLE IF NOT EXISTS test (
  task_id INT(11) NOT NULL AUTO_INCREMENT,
  subject VARCHAR(45) DEFAULT NULL,
  start_date DATE DEFAULT NULL,
  end_date DATE DEFAULT NULL,
  description VARCHAR(200) DEFAULT NULL,
  PRIMARY KEY (task_id)
)

você verá o pop-up no outro host!

    
por heronro 14.09.2017 / 16:01