系统重启后,我的复制突然停止。所以我尝试让从属服务器恢复到最新状态。
为此,我从主数据库创建一个转储并将其导入到从属数据库中,例如
mysqldump --host=MASTERADDR --port=MYPORT -u root --password=DBPASS DBNAME > FILE.sql
mysql --host=SLAVEADDR --port=MYPORT -u root --password=DBPASS DBNAME < FILE.sql
然后在从服务器上我“重新启动”我的复制:
STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_HOST = 'MASTERADDR', MASTER_PORT = MYPORT, MASTER_USER = 'REPLUSER', MASTER_PASSWORD = 'REPLPW', MASTER_AUTO_POSITION = 1;
START SLAVE;
SELECT SLEEP(1);
SHOW SLAVE STATUS\G
以前这种方法很有效。但现在我收到以下错误代码:
Last_Errno: 1062
Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction '691042d7-6ca8-11ed-a122-0242ac120002:4' at master log mysql-bin.000001, end_log_pos 1938. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.
我已经尝试过:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
但这不起作用而且似乎被忽略了。
请问,我该怎么做才能重新开始复制?
答案1
MASTER_AUTO_POSITION = 1;
可能无效。0 或 4 是 binlog 的开始。但您没有指定哪个 binlog。
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
表示跳过复制流中的下一个命令。 这是具有破坏性的,在不知道跳过了什么查询的情况下不应使用。
RESET SLAVE
也是相当激烈的。
您是否拥有自系统设置以来的所有 binlog?如果没有,您是否有一个特定的点(binlog 名称 + pos)?(听起来你没有。)
GTID 是否启用?
最底线是,我怀疑您需要从主服务器重建副本。
家庭作业:阅读更多有关复制的内容。