我推出了以Amazon Linux和Amazon-EBS为根卷的Amazon EC2。我还在这个EBS卷上启动了tomcat7和mysql 5.5。
后来我决定从Amazon Linux更改为Ubuntu。为此,我需要使用新的EBS根卷启动另一个Amazon EC2实例。现在我想将旧版EBS卷中的tomcat7和mysql复制到新版本。我在mysql中有表和数据,我不想放松,并且在tomcat上运行应用程序。怎么去呢?
答案 0 :(得分:3)
一些想法和建议。
首先,如果你将要为你的数据库的任何显著的负载,运行它EBS背量可能不是一个好主意作为EBS支持的存储相对于机器的本地/临时存储慢得令人难以置信的(/ MNT)。现在很明显你不希望数据存储在临时存储上,所以如果你想在EC2上运行MySQL,你真的无能为力。因此,如果您的基础架构要求允许,我的建议是为您的数据库使用RDS实例。
其次,如果这是一个生产应用程序,那么在进行此转换时,您无疑会遇到一些停机时间。问题是您是否需要绝对减少停机时间。如果是这样,那么您需要了解数据库的大小。转储/加载需要很长时间吗?如果没有,您可能只需启动并运行新实例,并在数据库的旧副本上进行测试,然后在转换时转储并加载当前数据库。
如果它是一个大型数据库,那么也许您可以启用MySQL二进制日志记录。然后在已知的二进制日志位置转储数据库。然后在新实例上安装此转储。然后,当准备切换时,您可以重播新实例上的二进制日志以使其最新。同样,您可以将新实例上的数据库设置为副本,直到切换为止,此时您将其作为主数据。
如果您不想使用二进制日志记录,您甚至可以考虑使用rsync同步物理数据库文件,但如果您不熟悉处理实际的物理数据库文件,这可能是一个有问题的方法。
就您的应用程序而言,假设它只是一组文件,迁移应该更加简单。我不会复制Tomcat7安装本身,而只是在Ubuntu上安装Tomcat,然后调整配置以匹配当前。
就转换本身而言,这应该非常简单,并且根据您是否为服务器使用弹性IP或者是否位于负载均衡器之后,方法会有所不同,