如何在没有停机或数据丢失的情况下将应用指向推荐的RDS副本

时间:2015-04-17 11:17:31

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

我正在使用带有只读副本的RDS对数据库架构执行一些DDL操作,主要是向表中添加列,而不会对表锁定或性能产生影响。

现在,我想将read副本推广为master,并将我的应用程序指向新推出的数据库,如here所述。但是,文档说:

  

促销过程可能需要几分钟或更长时间才能完成,具体取决于只读副本的大小

据我所知,在升级副本时,来自源的更改不会被复制。因此,在我将应用程序指向新数据库之前,新数据库不会包含在副本升级期间插入的记录。

除了在我的应用中安排停机时间外,有什么办法可以防止从一个数据库移动到另一个数据库时数据丢失吗?

1 个答案:

答案 0 :(得分:0)

在我看来,在您的情况下,没有必要提拔奴隶。如果您想要避免在ALTER期间锁定,则可以使用Percona的preserving source IP addresses工具来完成此工作。

该工具将创建一个新表,在其中复制数据,然后交换旧表和新表。效果非常流畅。

 pt-online-schema-change -h myrds-001.ccxyxyx14.us-east-1.rds.amazonaws.com --print --alter-foreign-keys-method rebuild_constraints --alter "ADD COLUMN mycolumn1 VARCHAR(36), MODIFY COLUMN mycolumn2 VARCHAR(36)" --set-vars "foreign_key_checks=false" --recurse 0  --execute  D=mydb,t=mytable

如果仍处于锁定状态,请尝试使用二进制日志代替触发器来使用此工具pt-online-schema-change