跳至内容

如何使用 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. 确认您已为要复制的活动数据库实例启用自动备份
    **注意:**最短备份保留期为 1 天。备份数据时,会产生额外费用。有关详细信息,请参阅 Amazon RDS 定价

  2. 使用相同的配置为活动数据库实例创建只读副本

  3. 登录到只读副本数据库实例。

  4. 运行以下命令,以确认只读副本数据库实例与您的活动数据库实例是否匹配。
    对于 MySQL 8.0.23 及更高版本:

    mysql> show replica status \G

    对于 8.0.23 之前的 MySQL 版本:

    mysql> show slave status \G

    **注意:**当副本实例未落后于您的数据库实例时,Seconds_Behind_Master 参数将显示为 0

  5. 在只读副本数据库实例上运行以下命令以停止复制

    mysql> call mysql.rds_stop_replication;
  6. 要记录 -log_file-log_position 参数,请在只读副本数据库实例上运行以下命令。
    对于 MySQL 8.0.23 及更高版本:

    mysql> show replica status \G

    对于 8.0.23 之前的 MySQL 版本:

    mysql> show slave status \G

    注意:****-log_filerelay_source_log_file 的值,-log_positionexec_source_log_pos 的值。

创建只读副本数据库实例的转储文件

完成以下步骤:

  1. mysqldump 客户端或类似实用程序中运行以下命令,以创建只读副本数据库实例的备份:

    mysqldump -h hostname -u username -p dbname > backup_file_name.sql
  2. 登录您的本地服务器,然后将转储文件传输到该服务器。

将转储文件恢复到新的数据库实例

完成以下步骤:

  1. 在本地服务器上创建新的外部数据库实例。

  2. 运行以下命令将转储文件恢复到新的外部数据库实例:

    mysql -h hostname -u username -p dbname < backup_file_name.sql
  3. 登录到您的活动数据库实例。

  4. 运行以下命令配置复制用户,并向该用户授予必要的权限:

    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@'%';

    **注意:**请将 repl_user 替换为您的复制用户名。

  5. 登录到新的外部数据库实例,然后停止本地服务器。

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

  7. 保存文件。

  8. 重启本地服务器。

确认新的外部数据库实例可以连接到活动数据库实例

如果您使用 Amazon Elastic Compute Cloud (Amazon EC2) 作为外部 MySQL 实例,请更新您的实例以允许来自安全组的连接。或者,允许来自活动数据库实例安全组中的 IP 地址的连接。如果您使用外部 MySQL 服务器,请运行 telnet 来测试连接。有关详细信息,请参阅为什么我无法连接到我的 Amazon RDS 数据库实例?

完成以下步骤:

  1. 要更改副本服务器用于连接源的参数,请在新的外部数据库实例上运行以下命令。
    对于 MySQL 8.0.23 及更高版本:
    mysql> change replication source to source_host='rds-endpoint', source_user='repl_user', source_password='password', source_log_file='mysql-bin.000001', source_log_pos=107;
    对于 8.0.23 之前的 MySQL 版本:
    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;  
    
    **注意:**请将 rds-endpoint 替换为您的活动数据库实例的端点。使用您在将转储文件恢复到新数据库时创建的用户名和密码。请将 relay_source_fileexec_source_log_pos 值替换为只读副本的 -log_file-log_position 值。
  2. 确认本地服务器可以连接到您的活动数据库实例。

启动复制

完成以下步骤:

  1. 登录本地服务器。

  2. 运行以下命令以启动复制:
    对于 MySQL 8.0.23 及更高版本:

    mysql> start replica;

    对于 8.0.23 之前的 MySQL 版本:

    mysql> start slave;
  3. 运行以下命令,以检查您的活动数据库实例与本地服务器之间的复制是否同步:
    对于 MySQL 8.0.23 及更高版本:

    mysql> show replica status\G

    对于 8.0.23 之前的 MySQL 版本:

    mysql> show slave status\G
  4. Seconds_Behind_Master 参数等于 0 时,删除只读副本数据库实例。

相关信息

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

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

Aurora 与 MySQL 之间或 Aurora 与其他 Aurora 数据库集群之间的复制(二进制日志复制)

AWS 官方已更新 1 年前