Проблемы репликации Mysql

У меня есть малина pi (IP.28), работающая с Mysql 5.5.57 (raspbian) и Ubuntu с MySql 5.7.19 (IP.10)

Я настраиваю репликацию для Master -> Slave, это работал отлично. Затем я попытался перейти на Master & lt; -> Master setup, однако никакие изменения в DB не натолкнулись на машину Ubuntu.

Я пытаюсь начать снова (удаление binlogs или изменение пути к папке) , однако я получаю эту ошибку:

mysql> flush master; ERROR 1186 (HY000): Binlog закрыт, не может СБРОСИТЬ MASTER

Это фрагмент из my.cnf на 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

Как вы можете видеть, log_bin комментируется вне. Если я раскомментирую это, я не могу успешно перезапустить службу MySql, я получаю следующую ошибку в 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.

После того, как вы закончили вывод строки, я могу вернуться на MySql, без ошибок в 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

Единственная информация, которую я нашел в Интернете, - это комментарии, говорящие о запуске sudo service mysql start. Это определенно не ответ на мою проблему.

0
задан 11 September 2017 в 19:23

2 ответа

У меня была проблема с более старыми руководствами по настройке репликации MySql.

В MySQL 5.5 удалены следующие параметры. Если вы попытаетесь запустить mysqld с любым из этих параметров в MySQL 5.5, сервер прерывается с неизвестной ошибкой переменной. Я испытал это, множество других ошибок, так как я пытался много разных конфигураций. В конце я начал новый и все еще имел ту же проблему, пока не узнал, что эти команды являются причиной этой проблемы.

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

Решение, комментируйте связанные с мастером переменные.

Сделайте следующее: On Master:

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;

On Slave:

# 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;

Стоит отметить, что вы должны иметь возможность подключаться к каждому удаленному хосту с помощью опции mysql -h для тестирования учетные данные, после создания пользователей и предоставления привилегий, не забывайте команду привилегий flush.

/var/log/mysql/error.log - ваш друг во время этих сценариев проб и ошибок. Я рекомендую закрыть журнал при перезапуске MySql по мере необходимости.

обратите внимание, вам понадобятся эти журналы в файле конфигурации;

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

после запуска slave; на каждом хосте вы увидите некоторые данные через:

SHOW MASTER STATUS; SHOW BINARY LOGS;

, если вы создадите примерную базу данных, а затем таблицу;

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) )

вы увидите, что она появляется на другом хозяйничать!

0
ответ дан 18 July 2018 в 07:02

У меня была проблема с более старыми руководствами по настройке репликации MySql.

В MySQL 5.5 удалены следующие параметры. Если вы попытаетесь запустить mysqld с любым из этих параметров в MySQL 5.5, сервер прерывается с неизвестной ошибкой переменной. Я испытал это, множество других ошибок, так как я пытался много разных конфигураций. В конце я начал новый и все еще имел ту же проблему, пока не узнал, что эти команды являются причиной этой проблемы.

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

Решение, комментируйте связанные с мастером переменные.

Сделайте следующее: On Master:

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;

On Slave:

# 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;

Стоит отметить, что вы должны иметь возможность подключаться к каждому удаленному хосту с помощью опции mysql -h для тестирования учетные данные, после создания пользователей и предоставления привилегий, не забывайте команду привилегий flush.

/var/log/mysql/error.log - ваш друг во время этих сценариев проб и ошибок. Я рекомендую закрыть журнал при перезапуске MySql по мере необходимости.

обратите внимание, вам понадобятся эти журналы в файле конфигурации;

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

после запуска slave; на каждом хосте вы увидите некоторые данные через:

SHOW MASTER STATUS; SHOW BINARY LOGS;

, если вы создадите примерную базу данных, а затем таблицу;

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) )

вы увидите, что она появляется на другом хозяйничать!

0
ответ дан 24 July 2018 в 18:43

Другие вопросы по тегам:

Похожие вопросы: