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

时间:2017-10-18 17:18:12

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

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

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

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

我现在正在做我正在做的事情,即mysqldump X并将其恢复为Y,还是RDS提供了其他一些方法/快捷方式?

4 个答案:

答案 0 :(得分:2)

考虑迁移到RDS Aurora for MySQL。

它支持整个数据库的本机copy-on-write克隆(意味着服务器实例,而不是架构) 不需要进行实际的“复制”。

写时复制意味着“原始”服务器和“克隆”共享相同的物理磁盘(称为Aurora Cluster Volume,它使用4/6法定数量在3个可用区域内复制两次),两个服务器共享相同的磁盘块,直到其中一个进行更改...即复制操作实际发生时(“写入时”)。因此,您只需使用存储原始工作数据集所需的存储空间以及克隆后发生的更改。

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

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

答案 1 :(得分:1)

您可以将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:

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

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

答案 2 :(得分:0)

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

a。在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>';

答案 3 :(得分:0)

因为标题涉及到AWS实例迁移,所以最好的方法是针对我的情况(可以根据其他情况而定)

  1. 转到-> https://console.aws.amazon.com/rds
  2. 选择数据库实例
  3. 操作->快照
  4. 转到-> https://console.aws.amazon.com/rds
  5. 左窗格中的快照
  6. 选择刚创建的快照
  7. 操作->恢复快照

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