zoukankan      html  css  js  c++  java
  • 如何将RDS的数据同步到本地自建数据库

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

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

    但是这种根据binlog文件和位点来同步RDS的数据到本地的方式非常容易导致同步中断,因为当RDS发生了主备切换(主备切换,重启,跨机迁移),本地数据库所指向RDSbinlog
     
    位点则会发生变化(RDS主库与备库的binlog位点是不一致的),这样就会导致本地数据库与RDS的数据复制同步中断。
    RDS
    5.6
    的版本中主备同步使用新复制方式GTIDRDS的主备具有相同的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的物理备份文件恢复
    innodb_log_files_in_group=2###
    使用RDS的物理备份文件恢复
    innodb_log_file_size=524288000###
    使用RDS的物理备份文件恢复
    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;
    设置本地MySQLRDS的复制关系,账户qianyi是在RDS控制系统中添加(注意:
    同步账户不要以repl开头);
    4
    .测试同步关系是否正常,可以在本地MySQL执行show slave statusG查看同步状态,同时可以在RDS中插入测试一些数据,或者重启实例,观察同步情况:
    mysql> show slave statusG;
    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的原生复制,所以可能会导致本地MySQLRDS的复制出现中断,可以定时去探测  Slave_IO_Running Slave_SQL_Running两个状态值是否为yes,同时也需要关注本地MySQLRDS的延迟: Seconds_Behind_Master

  • 相关阅读:
    cookie,请求报文,
    ser,ver
    关于 通知的 死循环,
    这读取的好蛋疼,为什么一写 一读就有问题了,不一致了,
    缓存小姐 挡拆,网络请求 不同步 惹的祸,
    viewdidload ,viewwillappear,
    提示输入 用户名 ,密码,--》转
    前端面试
    npm与cnpm
    vue与node和npm关系
  • 原文地址:https://www.cnblogs.com/lizhaojun-ops/p/6592022.html
Copyright © 2011-2022 走看看