首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVM自建基于GTID复制的mysql作为CDB的从库

CVM自建基于GTID复制的mysql作为CDB的从库

原创
作者头像
SEian.G
发布2018-07-11 19:54:43
3.9K2
发布2018-07-11 19:54:43
举报
文章被收录于专栏:SEian.G学习记录SEian.G学习记录

云数据库CDB本身已经是主从架构,不过很多用户还是希望通过自建mysql实现和云数据库cdb实现主从同步,这时候用户就可以自己在云服务器CVM上部署从库,下面是部署步骤 :

【备注:本文是基于mysql 5.7实现的】

1、首先用户通过在控制台创建一个用于复制的账户wjqrepl;

2、给wjqrepl用户赋予相应的权限

3、导出云数据库中的业务库数据

导出出现警告原因:

mysql提示: 当前数据库实例中开启了 GTID 功能, 在开启有 GTID 功能的数据库实例中, 导出其中任何一个库, 如果没有显示地指定--set-gtid-purged参数, 都会提示这一行信息. 意思是默认情况下, 导出的库中含有 GTID 信息, 如果不想导出包含有 GTID 信息的数据库, 需要显示地添加--set-gtid-purged=OFF参数.。

【备注:该步骤也可以通过控制台手动执行备份,然后通过控制台下载备份文件】

4、确认自建从库是否开启GTID

如果没有开启,修改my.cnf的配置文件,在[mysqld]中增加如下内容:

然后重新自建mysql数据库服务。

5、将上述导出的备份文件导入到自建的mysql数据库中;

ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

报错说明:

带有 GTID 信息的备份 文件, 要求目标数据库实例必须开启 GTID 功能, 且当前数据库中无其他 GTID 信息. 如果目标数据库中已经记录了一条或一条以上的 GTID 信息, 那么在导入数据库时会上面类似的错误;

检查一下从库的GTID信息:

解决方法:

1、重新 dump 数据库, 使用--set-gtid-purged=OFF的参数禁止;

2、在目标数据库中执行 reset slave all;和 reset master;清空所有 GTID 信息之后就可以导入了;

之后,重新执行导入操作,成功;

6、在CVM自建mysql数据库配置主从同步关系,并启动slave

7、查看主从同步关系是否成功

主库(CDB):

从库:(自建mysql)

通过执行show slave status\G;发现主从同步成功;下面即可做一些简单的测试,验证主从同步关系!

问题总结:

在自建mysql上配置主从同步关系时,可能会出现配置成功,但是通过show slave status\G;查看同步失败的问题,出现如下的问题:

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: '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.'

原因分析:

因为CDB的binlog默认保存5天,这样的前提下,我们又想使slave通过replication从master进行数据复制。此时我们就需要跳过master已经被purge的部分,进行强行同步;

解决方法:

(1)先确认master上已经purge的部分。从下面的命令结果可以知道master上已经缺失56664dae-80af-11e7-afa0-446a2e8b4e3a:1-57955740这一条事务的相关日志;

(2)在slave上,

首先,执行stop slave;然后通过set global gtid_purged='56664dae-80af-11e7-afa0-446a2e8b4e3a:1-57955740';的方式,跳过已经purge的部分;最后,执行start slave;

(3)然后再次通过show slave status\G;查看主从同步的成功;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、首先用户通过在控制台创建一个用于复制的账户wjqrepl;
  • 2、给wjqrepl用户赋予相应的权限
  • 3、导出云数据库中的业务库数据
  • 4、确认自建从库是否开启GTID
  • 5、将上述导出的备份文件导入到自建的mysql数据库中;
  • 6、在CVM自建mysql数据库配置主从同步关系,并启动slave
  • 7、查看主从同步关系是否成功
  • 问题总结:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档