重启后,Mysql slave会被破坏

问题描述 投票:2回答:3

请帮忙!

我基于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 database-replication master-slave gtid
3个回答
1
投票

在主人 -

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。你可以检查你的中继日志文件)


1
投票

好吧,神秘解决了。

还记得我是怎么写的那个问题与我对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的帮助!


0
投票

昨天遇到了同样的问题。

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;
© www.soinside.com 2019 - 2024. All rights reserved.