克隆 AWS RDS 数据库的最有效方法?

Most efficient way to clone an AWS RDS database?

我在名为 X 和 Y 的服务器上有 2 个 MySQL 数据库 运行ning,它们具有相同的内容。全天的一系列更新 运行,这改变了 X 的内容。在一天结束时,一个进程 运行s 将 X 的内容与 Y 的内容进行比较(对于各种表) 以发现新行、更新的行数据等。处理完更新后,mysqldump 用于转储 X,然后 Y 被转储覆盖。 X 和 Y 现在又相同了,整个过程重复进行。

我正在研究将这些数据库迁移到 Amazon RDS。完成上述过程的最有效方法是什么?

我知道我可以拍摄数据库的快照并恢复它,但我认为这只是在实例级别?那意味着我必须 运行 2 个实例,这似乎是不必要的。我没有问题 运行 在同一个实例上连接两个数据库(我不想不必要地为多个实例付费)。

我只是做我现在正在做的事情,即 mysqldump X 并将其恢复为 Y,还是 RDS 提供的其他 method/shortcut?

您可以将 AWS MySQL RDS 实例设置为外部主机的从机。

将完整转储加载到 RDS 后,调用存储过程 mysql.rds_set_external_master,如下所示:

mysql> call mysql.rds_set_external_master ('10.10.3.2', 3306, 'replica', 'password', 'mysql-bin-changelog.122', 108433, 0);

然后开始复制:

mysql> call mysql.rds_start_replication;

同步数据后,您可以通过以下方式将 RDS 升级为 master:

mysql> call mysql.rds_stop_replication;
mysql> call mysql.rds_reset_external_master;

通过使用外部 X 或 Y 服务器执行此操作,AWS RDS 的行为就像一个副本,如果需要,您可以将其用作未来的主服务器。

考虑为 MySQL 迁移到 RDS Aurora。

它支持整个数据库的本机写时复制克隆(意思是服务器实例,而不是模式)无需制作实际的"copy."

写时复制意味着 "original" 服务器和 "clone" 共享同一个物理磁盘(称为 Aurora 集群卷,它在 3 个可用性区域中自我复制两次,使用 4 /6 quorum),两台服务器共享相同的磁盘块 直到 其中一个进行更改...这是复制操作实际发生的时间("on write")。因此,您只需使用存储原始工作数据集以及克隆后发生的更改所需的存储空间。

在这样的设置中没有服务器是主控 -- 它们在克隆后都独立运行。我怀疑我没有用我的描述来公正地对待这种创新——它涉及相当多的黑魔法。请参阅文章(带有写时复制的插图): http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Managing.Clone.html

A​​urora 与 MySQL 5.6 兼容。更准确地说,Aurora MySQL 5.6,删除了 MyISAM 并大量重写了 InnoDB 以优化性能并使用复制的 Aurora Cluster Volume 存储技术。

今天有点晚了,但我刚刚通过 (1) 创建一个备份到 S3 的数据库,然后 (2) 从 S3 恢复备份,即

一个。在 S3 中创建备份数据库

EXEC msdb.dbo.rds_backup_database @source_db_name = '<database-name-goes-here>'
                                 ,@s3_arn_to_backup_to = 'arn:aws:s3:::<bucket-name-goes-here>/<backup-filename-goes-here>.bak'
                                 ,@overwrite_S3_backup_file = 1;

b。等待任务完成。你可以执行下面的SQL来检查这个

exec msdb.dbo.rds_task_status @db_name='<database-name-goes-here>';

c。当生命周期为 "SUCCCESS" 时,您可以使用以下命令从 S3 存储桶恢复

exec msdb.dbo.rds_restore_database @restore_db_name='<new-database-name-goes-here>'
                                  ,@s3_arn_to_restore_from='arn:aws:s3:::<bucket-name-goes-here>/<backup-filename-goes-here>.bak';

d.同样,您可以使用以下 SQL 命令

监控恢复状态
exec msdb.dbo.rds_task_status @db_name='<database-name-goes-here>';

既然标题是关于 AWS 实例迁移的,最好的方法就是我的案例(可能因其他案例而异)

  1. 转到 -> https://console.aws.amazon.com/rds
  2. Select 您的数据库实例
  3. 操作 -> 拍摄快照
  4. 转到 -> https://console.aws.amazon.com/rds
  5. 左窗格中的快照
  6. select 您刚刚创建的快照
  7. 操作 -> 还原快照

完成上述步骤后,您将被重定向到 RDS 实例创建页面,根据要求填写必填字段,您就完成了迁移:D