У меня есть малина 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. Это определенно не ответ на мою проблему.
У меня была проблема с более старыми руководствами по настройке репликации 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)
)
вы увидите, что она появляется на другом хозяйничать!
У меня была проблема с более старыми руководствами по настройке репликации 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)
)
вы увидите, что она появляется на другом хозяйничать!