AWS RDS 迁移
AWS RDS migration
当前设置如下:
- MySQL RDS Master InstanceDB 在它的一些数据库中有一些 MyISAM 表(在默认 VPC 中)
- MySQL RDS 只读副本(在默认 VPC 中)
- 创建并准备好私有子网的新自定义 VPC,以便我可以执行到这个新自定义 VPC 的迁移
1) 停止从 web/app 服务器
到 RDS 数据库的流量
2) 按照以下过程创建 RDS InstanceDB 的手动快照:
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#Overview.BackupDeviceRestrictions
如果您想在恢复之前拍摄 MyISAM 表的快照,请按照以下步骤操作:
2.1) 停止所有 activity 到您的 MyISAM 表(即关闭所有会话)。
您可以通过为从 SHOW FULL PROCESSLIST
命令返回的每个进程调用 mysql.rds_kill
命令来关闭所有会话。
如果复制到 ReadReplica,负责进程如何?
2.2) 锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新名为 myisam_table1 和 myisam_table2 的两个表:
mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
2.3) 手动拍摄快照
2.4) 快照完成后,释放锁并在 MyISAM 表上恢复 activity。您可以使用以下命令释放表上的锁:
mysql> UNLOCK TABLES;
这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘,从而确保从数据库快照恢复时的干净启动。
3) 从快照恢复并在新的自定义 VPC 中创建新的 DBInstance
4) 改变(用户数据库)表以更改为 InnoDB
ALTER TABLE table_name ENGINE=InnoDB;
5) 修改web/app代码(自定义VPC中的新服务器)指向新的RDS DBInstance
有什么想法吗?有人执行过类似的程序吗?
我应该事先停止 ReadReplica 吗?
谢谢。
如果有人遇到同样的问题,我按照上面的步骤操作,效果很好。
如果您将参数组分配给新的 RDS 并且想要对 InnoDB 进行更改,请小心。确保参数组允许这样做。
当前设置如下:
- MySQL RDS Master InstanceDB 在它的一些数据库中有一些 MyISAM 表(在默认 VPC 中)
- MySQL RDS 只读副本(在默认 VPC 中)
- 创建并准备好私有子网的新自定义 VPC,以便我可以执行到这个新自定义 VPC 的迁移
1) 停止从 web/app 服务器
到 RDS 数据库的流量2) 按照以下过程创建 RDS InstanceDB 的手动快照: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups.html#Overview.BackupDeviceRestrictions 如果您想在恢复之前拍摄 MyISAM 表的快照,请按照以下步骤操作:
2.1) 停止所有 activity 到您的 MyISAM 表(即关闭所有会话)。
您可以通过为从 SHOW FULL PROCESSLIST
命令返回的每个进程调用 mysql.rds_kill
命令来关闭所有会话。
如果复制到 ReadReplica,负责进程如何?
2.2) 锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新名为 myisam_table1 和 myisam_table2 的两个表:
mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
2.3) 手动拍摄快照
2.4) 快照完成后,释放锁并在 MyISAM 表上恢复 activity。您可以使用以下命令释放表上的锁:
mysql> UNLOCK TABLES;
这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘,从而确保从数据库快照恢复时的干净启动。
3) 从快照恢复并在新的自定义 VPC 中创建新的 DBInstance
4) 改变(用户数据库)表以更改为 InnoDB
ALTER TABLE table_name ENGINE=InnoDB;
5) 修改web/app代码(自定义VPC中的新服务器)指向新的RDS DBInstance
有什么想法吗?有人执行过类似的程序吗? 我应该事先停止 ReadReplica 吗?
谢谢。
如果有人遇到同样的问题,我按照上面的步骤操作,效果很好。 如果您将参数组分配给新的 RDS 并且想要对 InnoDB 进行更改,请小心。确保参数组允许这样做。