原因:腾讯云数据丢失,但是又有业务在腾讯云上,所以需要对数据库进行备份(自建从库,腾讯云的说法),做腾讯云数据库的从库
基于mysql 5.7实现.
1、首先用户通过在控制台创建一个用于复制的账户wjqrepl;
2、给wjqrepl用户赋予相应的权限
需要进入数据库命令行中,
grant replication slave on *.* to 'xxxxx'@'%' identified by '1234567';
flush privileges;
3、导出云数据库中的业务库数据
4、确认自建从库是否开启GTID
show variables like '%gtid%' 查看gtid_mode 的value是否为on
如果没有,则修改my.cnf 在[mysqld]中增加如下内容:
gtid-mode=on
enforce-gtid-consistency=on
5、将上述导出的备份文件导入到自建的mysql数据库中;
带有 GTID 信息的备份 文件, 要求目标数据库实例必须开启 GTID 功能, 且当前数据库中无其他 GTID 信息. 如果目标数据库中已经记录了一条或一条以上的 GTID 信息, 那么在导入数据库时会上面类似的错误;
解决方法:
1、重新 dump 数据库, 使用--set-gtid-purged=OFF的参数禁止;
2、在目标数据库中执行 reset slave all;和 reset master;清空所有 GTID 信息之后就可以导入了;
6、在CVM自建mysql数据库配置主从同步关系,并启动slave;
change master to master_host='bj-cdb-d8xcsyv6..com', master_user='re49pl', master_port=63021, master_password='re43sswo@', master_auto_position=1;
7, 出现“The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.”
1、这个应该是由于你在主库上执行过purge binary logs,然后当从库change master的时候,却要执行那些事务。
你可以在主库上先查找哪些gtid被purge了。
show global variables like 'gtid_purged';
然后拿着这个value,去从库上依次
stop slave;
set global gtid_purged = '8170836d-8e48-11e0c29b48f84:1-2'; # xxx是你主库上查到的value。 如果有多个,就一起写在后面,用,隔开
start slave;
这样能跳过执行被主库已经purge的事务了。