AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何在另一个 AWS 账户中创建 Amazon RDS MySQL 跨区域副本?
我想在与源数据库实例不同的 AWS 区域和账户中创建 Amazon Relational Database Service(Amazon RDS)for MySQL 副本。我该如何操作?
简短描述
您可以在另一个 AWS 区域中为以下使用案例创建 Amazon RDS for MySQL 副本,并从源数据库实例创建账户:
- 改进灾难恢复
- 全球横向扩展
- 在 AWS 区域和账户之间迁移
**注意:**无法直接使用 Amazon RDS 控制台或 AWS 命令行界面(AWS CLI)在另一个 AWS 账户中创建跨区域副本。本文中概述的步骤在不同 AWS 账户或区域中的两个 RDS for MySQL 实例之间设置了基于二进制日志的外部复制。
解决方法
要在另一个 AWS 账户中创建 Amazon RDS for MySQL 跨区域副本,请按照以下步骤操作。
**注意:**账户 A 包含源区域中的主 RDS for MySQL 实例。账户 B 包含目标区域中的 RDS for MySQL 副本。
1. 在账户 A(主要 Amazon RDS for MySQL 实例)中,确保二进制日志记录处于活动状态。默认情况下,在 RDS for MySQL 中激活自动备份和二进制日志记录。每当激活自动备份时,就会激活二进制日志记录。
**注意:**如果将备份保留期从“0”更改为非零值,将发生中断,反之亦然。
2. 使用以下命令更新二进制日志保留期:
mysql> CALL mysql.rds_set_configuration(name,value);
**提示:**选择在复制源上保留二进制日志文件足够长的时间段,以便在删除之前应用更改。Amazon RDS 将二进制日志文件保留在 MySQL 实例上长达 168 个小时(7 天)。有关更多信息,请参阅 mysql.rds_set_configuration。
例如,以下语法将二进制日志保留期设置为 24 小时:
mysql> call mysql.rds_set_configuration('binlog retention hours', 24);
3. 在账户 A 的主实例上创建复制用户,然后授予所需的权限:
mysql> CREATE USER 'repl_user'@'<domain_name>' IDENTIFIED BY '<password>';
4. 向在步骤 3 中创建的用户授予(必需的)REPLICATION CLIENT 和 REPLICATION SLAVE 权限:
mysql> GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'<domain_name>';
5. 选择目标区域,在主账户(账户 A)中创建跨区域只读副本。
6. 在账户 A 中登录已创建的副本实例。然后,确认副本与主数据库实例保持一致:
mysql> SHOW SLAVE STATUS\G
**注意:**检查以确保 Secons_Behind_Master 值为“0”。当此值为“0”时,副本与主数据库实例保持一致。有关详细信息,请参阅监控只读副本。
7. 在将只读副本捕捉到主数据库实例后,停止在步骤 5 中创建的副本实例上的复制。要停止复制,请使用以下语法:
mysql> call mysql.rds_stop_replication();
8. 在副本上运行 SHOW SLAVE STATUS 命令,然后为 Relay_Master_Log_File 和 Exec_Master_Log_Pos 记录输出值。Relay_Master_Log_File 和 Exec_Master_Log_Pos 值是您的二进制日志坐标,用于在后续步骤中设置外部复制。
9. 在账户 A 中创建副本实例的数据库快照。
**(可选)**或者,您可以使用生成逻辑备份的本地工具(例如 mysqldump)从账户 A 中的副本实例中导出数据。然后,使用本地工具将数据导入到账户 B 中相同版本的新创建 RDS for MySQL 实例。使用此方法,您无需在两个账户之间复制和共享快照或 AWS KMS 密钥。如果您决定使用此方法,请跳至步骤 12 以在两个实例之间设置网络访问和复制。在采用此方法之前,您必须将数据导入账户 B 中的 Amazon RDS for MySQL 实例。
10. 与账户 B 共享数据库快照。
**注意:**如果数据库快照已加密,则必须与目标账户共享用于加密快照的 AWS KMS 密钥。有关更多信息,请参阅共享加密快照。
11. 在账户 B 中还原数据库快照。
**注意:**无法通过共享加密快照恢复数据库实例。可以改为创建数据库快照副本,并通过该副本恢复数据库实例。
12. 在账户 A(来源账户)和账户 B(目标账户)之间设置网络访问权限。网络访问权限允许流量在源账户和目标账户之间流动。
13. 为账户 A 的主数据库实例配置入站安全组规则。此配置允许流量从账户 B(目标账户)中新创建的 RDS for MySQL 实例通过公共互联网流动。安全组会保护您的 Amazon RDS for MySQL 实例。
对于私有复制流量,必须在两个 AWS 账户之间创建并接受 VPC 对等连接。
14. 在账户 B 中的目标实例上设置外部复制。在命令中使用 repl_user 作为参数。注意:CALL mysql.rds_set_external_master 命令应由具有执行命令权限的数据库用户运行。
mysql> CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location );
例如:
mysql> CALL mysql.rds_set_external_master (mytestinnstance.us-east-1.rds.amazonaws.com', 3306, 'repl_user', '<password>', 'mysql-bin-changelog.000031', 107, 0);
**mytestinnstance.us-east-1.rds.amazonaws.com:主实例端点3306:主实例端口repl_user:在步骤 3 中创建的复制用户名密码:在步骤 3 中创建的用户密码mysql-bin-changelog.000031:步骤 8 的输出中的二进制日志文件名107:**步骤 8 的输出中的二进制日志位置
15. 在账户 B 中还原的实例上开始复制:
CALL mysql.rds_start_replication;
以下是示例输出:
+-------------------------+ | Message | +-------------------------+ | Slave running normally. | +-------------------------+
16. 在账户 B 实例上运行以下命令以检查复制状态:
mysql> show replica status \G
**注意:**对于 MySQL 8.0.22 及更高版本,SHOW SLAVE STATUS 已弃用,SHOW REPLICA STATUS 可以使用。有关更多信息,请在 MySQL 网站上参阅检查复制状态。
17. 删除在步骤 5 中创建的副本(作为中间实例)。此副本用于提取二进制日志坐标,而不必暂停账户 A 中的主要实例上的写入操作。
跨区域复制注意事项
考虑以下跨区域复制的方法:
- 源数据库实例可以在多个 AWS 区域中拥有跨区域只读副本。有关更多信息,请参阅在不同的 AWS 区域中创建只读副本。
- 对于与源实例不同的 AWS 区域中的任何只读副本,预计您可能看到更长的延迟时间。产生这种滞后时间的原因是区域数据中心之间的网络通道较长。有关复制滞后时间的信息,请参阅监控只读副本。
- 为跨区域复制而传输的数据会产生 Amazon RDS 数据传输费用。有关这些数据传输费用的更多信息,请参阅跨区域复制成本。
