如何使用来自 Amazon RDS for MySQL 活动数据库实例的二进制日志复制到本地备用实例?

2 分钟阅读
0

我想将 Amazon Relational Database Service (Amazon RDS) for MySQL 数据库实例复制到本地服务器。

简短描述

若要将数据从 Amazon RDS for MySQL 迁移到本地数据库服务器,请先在 AWS 上创建只读副本。然后,将复制目标从 Amazon RDS for MySQL 只读副本切换到本地服务器。

如果您使用基于 GTID 的复制,请参阅对外部源实例配置二进制日志文件位置复制

解决方法

1.    确认您要复制的数据库实例已启用自动备份。在此示例中,数据库实例为 RDS-active
**注意:**最短备份保留期为一天。

2.    使用相同的配置创建数据库实例的只读副本。在此示例中,副本为 RDS-standby

3.    登录 RDS-standby 数据库实例,并确认副本与 RDS-active 同步:

mysql> show slave status \G

**注意:**seconds_behind_master 必须为 0,这意味着没有副本延迟。

4.    在 RDS-standby停止复制

mysql> call mysql.rds_stop_replication;

5.    记录副本中的数据,然后记下 -log_file-log_position 参数:

mysql> show slave status \G

注意:****-log_fileRelay_Master_Log_File 的值,-log_positionExec_Master_Log_Pos 的值。

6.    退出终端,然后使用 mysqldump(或类似的实用程序)创建 RDS-standby 的备份,该备份将复制到目标服务器。在此示例中,目标本地服务器是 MySQL-target

$ mysqldump -h hostname -u username -p dbname > backup_file_name.sql

7.    创建备份后,登录 MySQL-target,将备份文件传输到目标本地服务器。

8.    创建一个新数据库,然后使用 dumpfile 将数据库还原到新的外部数据库实例:

$ mysql -h hostname -u username -p dbname < backup_file_name.sql

9.    登录 RDS-active 数据库实例,设置复制用户,然后向该用户授予必要的权限。请务必将 repl_user 替换为您自己的复制用户名。

mysql> create user repl_user@'%' identified by 'repl_user';
   mysql>grant replication slave, replication client on *.* to repl_user@'%';
   mysql>show grants for repl_user@'%';

**注意:**有关详细信息,请参阅 Aurora 和 MySQL 之间的复制,或者 Aurora 与另一个 Aurora 数据库集群之间的复制(二进制日志复制)

10.    登录目标数据库实例,然后停止 MySQL 服务器。

11.    修改 my.cnf 文件参数,使其指向您的唯一服务器 ID 和要从数据库实例复制的数据库的名称。例如,server_id=2replicate-do-db=test

12.    保存文件。

13.    在 MySQL-target 上重启 MySQL 服务器。

14.    与 RDS-active 数据库实例建立连接。为此,请在 MySQL-target 上运行下列命令:

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.000001', master_log_pos= 107;

15.    确认 MySQL-target 可以连接到 RDS-active

**注意:**如果您使用 Amazon Elastic Compute Cloud(Amazon EC2)作为外部 MySQL 实例,则允许来自安全组或 RDS-active 数据库实例安全组中的 IP 地址的连接。如果您使用外部 MySQL 服务器,请运行 telnet 来测试连接。有关详细信息,请参阅连接到我的 Amazon RDS 数据库实例时如何解决问题?

RDS-EndpointRDS-active 数据库实例的端点。用户名和密码与您在步骤 9 中创建的用户名和密码相同。MASTER_LOG_FILEMASTER_LOG_POS 是步骤 5 中记录的值。

16.    登录 MySQL-target,然后开始复制:

mysql> start slave;

检查复制是否在 RDS-activeMySQL-target 之间同步:

mysql> Show slave status\G

17.    当主实例后方的秒数等于零之后,您可以删除 RDS-standby 数据库实例。

相关信息

如何使用 AWS DMS 迁移到 Amazon RDS 或 Aurora MySQL 兼容版数据库实例?

使用复制从 MySQL 数据库实例导出数据