mysql 8.0.20不停机主从同步+实际问题解决

一、环境


CentOS : 7.3.1611 (Core) 

mysql:8.0.20

二、遇到的问题

1.查看主从同步发现下列问题

error connecting to master 'repl@192.168.0.21:3306' - retry-time: 60 retries: 4 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection。

注:主从同步的账号最好不要用'caching_sha2_password' ,使用'mysql_native_password'

修改后,启动slave(start slave),又报错

Last I0 Error: Got fatal error 1236 from master when reading data from binary log: "Could not find first log file name in binary log index file。

彻底同步无望!!只能重新同步!

三、开始同步

1、导出主数据库数据

mysqldump -uroot -p -h192.168.31.XX --single-transaction --master-data=2 --all-databases > /data/alldatabase.sql

#参数解析

--single-transaction 启用一个事务来进行备份操作,备份过程中不会对数据库进行锁操作

--master-data=2  该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE  MASTER命令前添加注释信息

2、停止从数据库的同步

>stop slave;
>reset master;
>reset slave all; 

3、导入主数据库数据

>source /tmp/alldatabase.sql
>flush privileges;    #如果同步所有的库需要执行此步骤,刷新用户信息

4、查看导出数据时binlog的位置

head -n50 alldatabase.sql

 5、准备启动slave

# 写入master当前位置
>CHANGE MASTER TO MASTER_HOST='192.168.31.xx', MASTER_USER='replication', MASTER_PASSWORD='xxxxxxx', MASTER_LOG_FILE='fcy4243-bin.000040', MASTER_LOG_POS=127128110;

#启动slave

>start slave;

#查看slave是否正在同步主库

>show slave status\G;

6、查看同步进程

 四,遇到的问题

起因:主库上有一个事件(Event),已废弃,我手动在navicat删除,导致主从同步失败

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ANONYMOUS' at source log wlyy6771-bin.000262, end_log_pos 110434944. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

查看replication_applier_status_by_worker看下问题。

select * from performance_schema.replication_applier_status_by_worker\G;

 LAST_ERROR_MESSAGE: Worker 1 failed executing transaction 'ANONYMOUS' at source log wlyy6771-bin.000262, end_log_pos 110434944; Error 'Unknown event 'event_auto_del_memorydata'' on query. Default database: 'zergj'. Query: 'DROP EVENT `zergj`.`event_auto_del_memorydata`'

根据上面的原因就知道从库上没有这个event。

网上没有找到相关的问题和答案。但是判断这个事务不影响其他问题,所以直接跳过:第一步

第一步:stop slave;

第二步:set global sql_slave_skip_counter=1;  #跳过此次事务。

第三步:start slave;

第四步:show slave status\G;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值