长期以来有很多的用户咨询如何将RDS的数据同步到本地的数据库环境中,本篇文章以在阿里云的ECS服务器为例来说明如何将RDS的数据同步到本地数据库中。RDS对外提供服务是一个DNS地址+端口3306,这样就屏蔽了RDS后端的主从节点,那么该如何将数据同步到本地?那么我们来看一下RDS的主从架构:

应用连接RDS,流量通过SLB指向主从节点的master,所以如果我们连接RDS的账户具有REPLICATION SLAVE, REPLICATION CLIENT的权限,则就可以把主库master的产生的binlog同步到本地数据库中去,实现数据同步。

但是这种根据binlog文件和位点来同步RDS的数据到本地的方式非常容易导致同步中断,因为当RDS发生了主备切换(主备切换,重启,跨机迁移),本地数据库所指向RDS的binlog 位点则会发生变化(RDS主库与备库的binlog位点是不一致的),这样就会导致本地数据库与RDS的数据复制同步中断。

在RDS 5.6的版本中主备同步使用新复制方式GTID,RDS的主备具有相同的GTID,那么如果主备发生切换,重启或者迁移,主备的GTID是不会发生变化,那么ECSàRDS的同步链路则不会发生中断,所以如果要将RDS的数据同步到本地,则需要将RDS升级到5.6的版本。

下面我们将RDS数据同步到本地的一些关键步骤罗列出来:

1.在ECS服务器上安装MySQL,详细步骤可以参考如下:

http://www.centoscn.com/mysql/2014/0924/3833.html

一些关键注意点:

a.数据库的版本至少为5.6.16及以上

b.需要在my.cnf中配置的一些关键参数:

server-id ###Slave配置需要

master-info-repository=file### Slave配置需要

relay-log-info_repository=file### Slave配置需要

binlog-format=ROW### Slave配置需要

gtid-mode=on###开启GTID需要

enforce-gtid-consistency=true###开启GTID需要

innodb_data_file_path=ibdata1:200M:autoextend###使用RDS的物理备份中的backup-my.cnf参数

innodb_log_files_in_group=2###使用RDS的物理备份中的backup-my.cnf参数

innodb_log_file_size=524288000###使用RDS的物理备份中的backup-my.cnf参数

2.MySQL安装好后,可以使用RDS提供的物理备份文件恢复到本地MySQL中,可以参考:

http://help.aliyun.com/knowledge_detail/5973700.html?spm=5176.7114037.1996646101.1.7qe3ot&pos=1

注意:

需要将备份解压后的文件backup-my.cnf中的三个参数加到启动文件中去

innodb_checksum_algorithm=innodb

innodb_data_file_path=ibdata1:200M:autoextend

innodb_log_files_in_group=2

3.数据库启动后,开始设置本地数据库与RDS的同步关系

a.reset slave;####用于重置本地MySQL的复制关系,这一步操作有可能报错:

mysql> reset slave;

ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set –server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

原因是由于RDS的备份文件中包含了RDS的主从复制关系,需要把这些主从复制关系清理掉,清理方法:

truncate table  slave_relay_log_info;

truncate table  mysql.slave_master_info;

truncate table  mysql.slave_worker_info;

然后重启MySQL;

b.SET @@GLOBAL.GTID_PURGED

=’818795a2-8aa8-11e5-95b1:1-289,8da7b8ab-8aa8-11e5-95b1:1-75′;

打开备份解压文件可以看到文件xtrabackup_slave_info,其中第一行就是我们需要在本地MySQL执行的命令,他表示在备份结束时刻RDS当前GTID值’

c.change master to

master_host=’gtid1.mysql.rds.aliyuncs.com’,

master_user=’qianyi’,master_port=3306,master_password=’qianyi’,

master_auto_position=1;

设置本地MySQL与RDS的复制关系,账户qianyi是在RDS控制系统中添加(注意:

同步账户不要以repl开头);

4.测试同步关系是否正常,可以在本地MySQL执行show slave status\G查看同步状态,同时可以在RDS中插入测试一些数据,或者重启实例,观察同步情况:

mysql> show slave status\G;

Slave_IO_State: Queueing master event to the relay log

Master_Host: gtid1.mysql.rds.aliyuncs.com

Master_User: qianyi

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000007

Read_Master_Log_Pos: 625757

Relay_Log_File: slave-relay.000002

Relay_Log_Pos: 2793

Relay_Master_Log_File: mysql-bin.000007

                Slave_IO_Running: Yes

                Slave_SQL_Running: Yes

Exec_Master_Log_Pos: 612921

Relay_Log_Space: 15829

       Seconds_Behind_Master: 57133

Master_SSL_Verify_Server_Cert: No

Master_Server_Id: 2319282016

Master_UUID: 818795a2-8aa8-11e5-95b1-6c92bf20cfcf

Master_Info_File: /data/work/mysql/data3001/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Reading event from the relay log

Master_Retry_Count: 86400

818795a2-8aa8-11e5-95b1-6c92bf20cfcf:17754-17811

Executed_Gtid_Set: 818795a2-8aa8-11e5-95b1-6c92bf20cfcf:1-17761

Auto_Position: 1

5.做好监控,由于采用MySQL的原生复制,所以可能会导致本地MySQL与RDS的复制出现中断,可以定时去探测  Slave_IO_Running和 Slave_SQL_Running两个状态值是否为yes,同时也需要关注本地MySQL与RDS的延迟: Seconds_Behind_Master。

如何将RDS的数据同步到本地自建数据库相关推荐

  1. 数据同步云端本地_如何从云端删除Windows 8的同步数据

    数据同步云端本地 The ability to sync data and settings between computers running Windows 8 is great, but it ...

  2. 快速将正式环境的数据同步到本地测试库

    利用 备份还原 快速将正式环境的数据同步到本地测试库: 1.远程连接到正式环境后,复制一份当天数据库的备份:如果当天还没备份,可以自行备份或者取前一天的. 注:如果不知道备份文件存放路径,直接在该数据 ...

  3. 索引使用的限制条件,sql优化有哪些,数据同步问题(缓存和数据库),缓存优化

    索引使用的限制条件,sql优化有哪些,数据同步问题(缓存和数据库),缓存优化 索引使用的限制条件,sql优化有哪些 a,选取最适用的字段:在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设 ...

  4. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL

    从自建MySQL迁移至RDS MySQL 更新时间:2020-08-20 10:49:52 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 增量数据迁移支持同步的SQL操作 数据库 ...

  5. #Livy配置Kerberos,#调用Hadoop组件,#Java 实现Livy大数据调用,#java拉取hive数据同步到本地

    项目场景: 78做java后端的, 让联调大数据, 78做java的都没看过大数据让去做, 又不是没做大数据的人了,而且 nm让做不懂得涨点工资, 发个福利吗? 自己写一个Java程序, 去调用别人L ...

  6. mysql不同实例数据同步_两台Mysql数据库数据同步实现实例

    做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本. 1. ...

  7. redis和sqlserver数据同步_redis缓存和mysql数据库同步

    转载自:https://www.cnblogs.com/lanbo203/p/7494587.html 解决方案 一.对强一致要求比较高的,应采用实时同步方案,即查询缓存查询不到再从DB查询,保存到缓 ...

  8. mysql 8.0数据备份恢复_RDS for MySQL8.0物理备份恢复到本地自建数据库

    此文章是centos7下的恢复流程. yum localinstall mysql80-community-release-el7-1.noarch.rpm yum -y install yum-ut ...

  9. 华为云RDS全量备份恢复到自建数据库(数据库qp文件恢复)

    安装MySQL 1.下载MySQL源仓库安装包 wget http://repo.mysql.com/mysql57-community-release-el6-9.noarch.rpm 2.安装My ...

最新文章

  1. [转]实战 SQL Server 2008 数据库误删除数据的恢复
  2. 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
  3. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
  4. 数据处理——One-Hot Encoding
  5. 计算机里的网络是什么意思啊,计算机网络中本地站点是什么意思
  6. 计算机学硕专业课可以自学吗,考研专业课怎么考?高效复习法三条就够!
  7. Shell脚本学习-阶段五-MYSQL101条调优
  8. Typora-Markdown编辑器语法
  9. 活出生命的意义-读后感
  10. 微信小程序实现五星评分效果
  11. 微信公众号数据2019_2019年微信公众号文章最新数据报告
  12. 美术资源检测 — 让你的网格无可挑剔
  13. 声音大小与振幅的关系_喇叭声音与尺寸大小的关系
  14. 计算机教学学期小结,学年第一学期信息技术教学工作总结
  15. 浏览器渲染原理以及性能优化
  16. 关于俄罗斯方块游戏软件C语言初步感受
  17. openlayer地图导出指定范围图片文件
  18. 前端项目中碰到的疑难杂症
  19. 时间转秒函数c语言,c语言函数mktime()如何将时间转换成经过的秒数实例源码
  20. [毕业设计]大数据电影数据分析可视化

热门文章

  1. sentry日志管理系统安装以及使用教程
  2. git 工作常用命令
  3. .net项目文档生成工具使用
  4. commont-net.jar 代码结构图
  5. win8安装11gR2[INS-13001] 环境不满足最低要求
  6. 大系统化小之后,微信如何解决大规模微服务下的难题?
  7. Elixir: 多太(Polymorphism)
  8. Quartz.NET基础知识概述
  9. as3 替换鼠标图标
  10. lego training