mysql - 使用MySQL 5.7 for MySQL Aurora实现RDS在不同区域之间的快速迁移

标签 mysql amazon-web-services amazon-rds amazon-aurora

还有什么更好的方法可以从大型数据库(可能超过 25GB)从巴西圣保罗的 RDS MySQL 5.7 快速迁移到弗吉尼亚州北部的 RDS Aurora转储)。

但是我不能让数据库停止超过 3 小时( 或者可能更少),因为这个数据库是一家公司的产品。

提前非常感谢您。

  • 圣保罗地区没有 MySQL Aurora(进行迁移的原因之一,此外成本是北弗吉尼亚州的两倍)

  • RDS 只能在必要时在迁移期间公开访问。

  • 我将无法使用多可用区。使用“AWS Database Migration Service”是否可行?

  • 我还必须迁移链接到该数据库的实例 EC2 和 S3(主要是 EC2)以避免延迟问题。

  • 迁移后,圣保罗地区的所有服务将停止。

  • 正如我之前所说,主要原因是长期和短期的成本降低(将考虑使用预留实例)和性能,以及实例 EC2 以避免延迟和不稳定的问题。

最佳答案

您在尝试移动数据库并同时将引擎从 MySQL 更改为 Aurora 时犯了一个错误。

现在迁移MySQL 5.7系统,稍后转换为Aurora。您不需要自找麻烦,同时做这两件事就是这样。

不可能“快速”远距离迁移主数据库,但可以使设置时间量变得无关紧要,并且激活时间接近于零。

不要尝试进行复制,而是创建数据的 RDS 跨区域副本,并在最后一刻将该副本提升为主副本。

Creating a Read Replica in a Different AWS Region

With Amazon RDS, you can create a MariaDB, MySQL, or PostgreSQL Read Replica in a different AWS Region than the source DB instance. You create a Read Replica to do the following:

  • Improve your disaster recovery capabilities.

  • Scale read operations into an AWS Region closer to your users.

  • Make it easier to migrate from a data center in one AWS Region to a data center in another AWS Region.

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html#USER_ReadRepl.XRgn

RDS 复制数据和设置副本需要多长时间并不重要,因为一旦复制,它就会开始复制自该过程开始以来主服务器上更改的所有内容。

一旦您确认一切正确且一致,那么您promote a replica 。它永久且不可撤销地与其原始上游实例分离,并变得可写。这是您要做的最后一件事,在应用程序开始写入这个新数据库后,您在圣保罗的原始系统就已过时,因为对其所做的更改将不再复制到新系统 - 它们将被永久隔离。

这种安排不需要您建立任何网络或公开访问数据库。

而且,您可以创建和销毁多个副本来测试此过程,而不会影响生产。

关于mysql - 使用MySQL 5.7 for MySQL Aurora实现RDS在不同区域之间的快速迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55890992/

相关文章:

mysql - 为什么我无法远程访问 Amazon RDS 上的 MySQL?

mysql - 在 AWS RDS MySQL 数据库之间传输数据

php - 在 jQuery upvote 插件中计算总票数

mysql - 计算两个值在同一行中出现的次数

php - 不将 Bootstrap 日期值保存到 Laravel 中的数据库表中

amazon-web-services - AWS Elasticache - Redis 与 MemcacheD

php - 有没有一个技巧或函数可以在 php 字符串中插入元素?

amazon-web-services - aws-cli 1.2.10 cron 脚本失败

ruby-on-rails - Rails AssetSync 和 AWS s3 存储桶访问被拒绝

boto3 - rds.create_db_instance 的 DBInstanceIdentifier 和 DBName 有什么区别?