3

请帮忙!

我基于GTID机制设置了主从复制。复制工作正常,直到从属设备上发生 mysqld 重启。然后混乱开始了……

重新启动后,我无法恢复复制。发出“START SLAVE”命令时,我收到以下错误消息:

第 1 行的错误 1794 (HY000):从设备未配置或无法正确初始化。您必须至少设置 --server-id 以启用主服务器或从服务器。可以在 MySQL 错误日志中找到其他错误消息。

不用说我确实在 my.cnf 中设置了 server-id(见下文)。

在 /var/log/mysqld.log 文件中,我发现以下错误消息:

[错误] 创建主信息时出错:找到多个复制元数据存储库实例,其中包含数据。无法决定哪个是正确的选择。

[错误] 无法创建或恢复复制信息存储库。

我不明白我做错了什么。

主从之间的通信通过 stunnel 进行 ssl 隧道化,但我认为这不是一个相关的事实,因为在重新启动之前一切正常。

我发现重新建立复制的唯一方法(mysql重启后)是手动删除mysql数据文件,然后再次加载从master导入的dump文件。(我使用 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。

任何帮助将不胜感激!

谢谢

纳达夫布鲁姆

4

3 回答 3

1

在主人 -

mysql> reset master;

[此命令将清除 master 的二进制日志并从新开始。所以如果你想保存它。]

启动从属 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

现在,如果一切顺利,您可以重新启动从属服务器(如果它已提交所有事务,那么没问题,否则它将开始在您的主二进制日志中执行横切。您可以检查您的中继日志文件)

于 2015-04-28T11:16:19.807 回答
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;'

那个“本地主机”的事情造成了混乱。我将其更改为“127.0.0.1”,现在重新启动不会造成任何伤害!

感谢 Hitech 和 Jaydee 的帮助!

于 2015-04-29T06:45:20.737 回答
1

昨天遇到了同样的问题。

Oracle 支持文档提供了帮助。

对于没有 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;
于 2019-04-17T17:18:44.753 回答