MySQL Master-Master 发生偏移时出现错误 1872

MySQL Master-Master 发生偏移时出现错误 1872

我正在尝试修复主-主 MySQL 数据库复制模型之间的复制。

服务器 1(IP 为 192.168.2.6)配置为:

auto-increment-increment       = 2
auto-increment-offset          = 1

因此它只写入奇数主键自动递增 ID。

服务器 2(IP 为 192.168.2.7)配置如下:

auto-increment-increment       = 2
auto-increment-offset          = 2

因此它仅写入偶数主键自动递增 ID。

有人告诉我这个方法已经管用一段时间了,但自从我入职以来,它一直处于同步失败状态。我假设这是可能的。

我的工作就是让它以这种方式工作。我已完成以下步骤以尝试使它们同步:

Server 1:
    mysql>
    RESET MASTER;
    # First time only:
    #GRANT REPLICATE SLAVE ON *.* TO 'replicate'@192.168.2.7 IDENTIFIED BY '[password_redacted]';
    #FLUSH PRIVILEGES;
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    bash#
    mysqldump -u root -p -ceQRE --hex-blob --triggers --opt --single-transaction --comments --dump-date --no-autocommit --all-databases -r /root/master.sql
    scp -P 5934 /root/master.sql [email protected]:.

    mysql>
    UNLOCK TABLES;

Server 2:
    mysql>
    STOP SLAVE;

    bash#
    mysql -u root -p < /root/master.sql

    mysql>
    # First time only:
    #GRANT REPLICATE SLAVE ON *.* TO 'replicate'@192.168.2.6 IDENTIFIED BY '[password_redacted]';
    #FLUSH PRIVILEGES;
    RESET SLAVE;
    CHANGE MASTER TO MASTER_HOST='192.168.2.6', MASTER_USER='replicate', MASTER_PASSWORD='[password_redacted]', MASTER_LOG_FILE='ibm.000001', MASTER_LOG_POS=28556380;
    START SLAVE;
    SHOW SLAVE STATUS\G

Server 1:
    mysql>
    STOP SLAVE;
    CHANGE MASTER TO MASTER_HOST='192.168.2.7', MASTER_USER='replicate', MASTER_PASSWORD='[password_redacted]', MASTER_LOG_FILE='ibm.000004', MASTER_LOG_POS=121875;
    CHANGE REPLICATION FILTER REPLICATE_DO_DB = (reminderdental2), REPLICATE_IGNORE_DB = (mysql);
    START SLAVE;

每次都说正在同步,但行数始终不一致。一段时间后,我会收到错误:

Slave SQL for channel '': Slave failed to initialize relay log info structure from the repository, Error_code: 1872
ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

我还尝试使用 Percona XtraBackup 来获取二进制备份/恢复,以便第一次启动它。

我考虑过转向 GTID 复制,但听说性能不太好。我对这两种解决方案都很感兴趣,希望能够以这种方式工作,并希望了解使用 GTID 的 2-9 服务器集群的性能反馈。

服务器1的版本是:

5.7.21-0ubuntu0.16.04.1-log (Ubuntu)
percona-xtrabackup-24/unknown,now 2.4.9-1.xenial amd64 [installed]

Serer 2 的版本是:

5.7.21-log MySQL Community Server (GPL)
percona-xtrabackup-24, 2.4.9.1.el7

答案1

在 MySQL > 6 上你还应该使用

mysql> STOP SLAVE;
mysql> RESET SLAVE ALL;

应该是一样的,但使用文档化的命令比调整系统表要好。另请参阅https://dev.mysql.com/doc/refman/8.0/en/reset-slave.html

答案2

如果您收到以下错误:

[错误] 通道“group_replication_applier”的从属 SQL:从属无法从存储库初始化中继日志信息结构,错误代码:1872

解决方案如下:

从 mysql 控制台:

USE mysql;
TRUNCATE TABLE slave_relay_log_info;

然后重新启动mysql:

service mysql restart

希望这也适合你们!

答案3

我知道这个问题已经很老了,今天我就遇到了这个问题,对我有用的是 Alessandro Carini 和 user260223 答案的组合:

在 mysql 控制台中使用 root 用户:

mysql> STOP SLAVE;
mysql> RESET SLAVE ALL;

进而:

USE mysql;
TRUNCATE TABLE slave_relay_log_info;

然后重新启动mysql服务

sudo service mysql restart

设置主信息:

CHANGE MASTER TO MASTER_HOST='[your master host/IP]',
MASTER_USER='[your master replication user]',
MASTER_PASSWORD='[your master replication password]',
MASTER_LOG_FILE='[your master file]',
MASTER_LOG_POS=[your master pos];

然后

START SLAVE;

并使用以下命令检查一切正常:

SHOW SLAVE STATUS\G;

答案4

我遇到了同样的问题,在我的例子中,原因是从服务器上缺少中继文件。“索引”中继文件中有一些带文件名的条目,但其中一个条目丢失了。我删除了该条目,然后重新启动后复制就开始了。干杯。

相关内容