请帮忙!
我基于GTID机制设置了主从复制。复制工作正常,直到从服务器上发生mysqld重启。然后一团糟开始......
重启后,我无法恢复复制。发出“START SLAVE”命令时,我收到以下错误消息:
第1行的错误1794(HY000):未配置从站或未能正确初始化。您必须至少设置--server-id以启用主服务器或从服务器。可以在MySQL错误日志中找到其他错误消息。
不用说我在my.cnf中设置了server-id(见下文)。
在/var/log/mysqld.log文件中,我发现以下错误消息:
[ERROR]创建主信息时出错:找到包含数据的多个复制元数据存储库实例。无法确定哪个是正确的选择。
[错误]无法创建或恢复复制信息存储库。
我无法理解我做错了什么。
主站和从站之间的通信是通过stunnel进行的,但我不认为这是一个相关的事实,因为在重启之前一切正常。
我发现重新建立复制的唯一方法(在mysql重启之后)是手动删除mysql数据文件,然后再次加载从主服务器导入的转储文件。 (我使用mysqldump)。这当然是不合理的。
以下是my.cnf文件:
在奴隶:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
server-id=2
log-bin=mysql-bin
binlog_format=ROW
relay_log=relay-log
skip-slave-start
enforce-gtid-consistency
gtid-mode=ON
log-slave-updates
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
在母校:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
gtid-mode=on
enforce-gtid-consistency
log-slave-updates
innodb_buffer_pool_size = 1G
query_cache_size = 32M
奴隶机:Centos 6.6,mysql 5.6.24。
主机:RHEL 6.6,mysql 5.6.10。
任何帮助将不胜感激!
谢谢
纳达夫布鲁姆
在主人 -
mysql> reset master;
[此命令将清除master的二进制日志并以new开头。如果你愿意,可以保存。]
当您启动从属mysqld时,请运行以下命令
mysql> stop salve;
mysql> reset slave;
mysql> change master to master_host='192.168.10.116', master_user='root', master_password='root', master_auto_position=1;
mysql> start slave;
mysql> show slave status \G
现在如果一切顺利的话,你可以重启奴隶(如果它提交了所有的事务然后没有问题,它将开始在你的主二进制日志中执行transection。你可以检查你的中继日志文件)
好吧,神秘解决了。
还记得我是怎么写的那个问题与我对stunnel的使用无关,作为主从之间隧道通信的意思吗?好吧,我错了。
问题是,我使用localhost端口3307作为与主站的从站通信的终点。 (stunnel监听此端口并将数据转发到主服务器ip)。所以“改变大师”是通过以下方式完成的:
change master to master_host="localhost", master_port=3307, master_user="XXX", master_password="XXX", MASTER_AUTO_POSITION = 1;'
那个“localhost”的东西引起了混乱。我将其更改为“127.0.0.1”,现在重新启动不会造成伤害!
感谢Hitech和Jaydee的帮助!
昨天遇到了同样的问题。
Oracle支持doc有所帮助。
对于没有Oracle支持的人。
原因
The cause is that both TABLE and FILE replication repository metadata exist at the same time, but only one form should.
解
Before setting up replication, remove the files specified by the my.cnf variables relay_log_info_file and master_info_file .
默认情况下,它们的名称映射到relay-log.info和master.info,它们位于datadir中。 (我不得不删除master.info文件)
并执行以下操作删除任何剩余配置:
STOP SLAVE;
SET SQL_LOG_BIN=0;
DELETE FROM mysql.slave_master_info ;
DELETE FROM mysql.slave_relay_log_info ;
SET SQL_LOG_BIN=1;