将 tomcat 和 mysql 从一个 Amazon EBS 卷复制到另一个卷



我推出了一个以 Amazon Linux 和 Amazon-EBS 作为根卷的 Amazon EC2。我还在这个EBS卷上启动了tomcat7和mysql 5.5。

后来我决定从Amazon Linux改用Ubuntu。为此,我需要启动另一个具有新 EBS 根卷的 Amazon EC2 实例。现在我想将 tomcat7 和 mysql 从旧的 EBS 卷复制到新的卷。我在 mysql 中有我不想丢失的表和数据,还有一个在 tomcat 上运行的应用程序。怎么做呢?

一些想法和建议。

首先,如果您的数据库将面临任何类型的重大负载,那么在 EBS 支持的卷上运行它可能不是一个好主意,因为 EBS 支持的存储相对于计算机的本地/临时存储 (/mnt) 非常慢。 现在显然你不希望数据库数据在临时存储上,所以如果你想在EC2上运行MySQL,你真的无能为力。 因此,如果您的基础设施要求允许,我的建议是为您的数据库使用 RDS 实例。

其次,如果这是一个生产应用程序,那么在进行此转换时,您无疑会有一些停机时间。 问题是您是否需要绝对减少停机时间。 如果是这样,那么您需要了解数据库的大小。 转储/加载需要很长时间吗? 如果没有,您可能只是启动并运行新实例,并在数据库的较旧副本上进行测试,然后在直接转换时转储并加载当前数据库。

如果它是一个大型数据库,那么也许您可以打开MySQL二进制日志记录。然后在已知的二进制日志位置转储数据库。 然后在新实例上安装此转储。 然后,当准备好进行直接转换时,您可以在新实例上重播二进制日志以使其处于最新状态。同样,您可以将新实例上的数据库设置为副本,直到直接转换,此时您可以将其设置为主实例。

如果您不想弄乱二进制日志记录,您甚至可以考虑只使用 rsync 来同步物理数据库文件,但如果您不熟悉处理实际的物理数据库文件,这可能是一个有问题的方法。

就您的应用程序而言,假设它只是一个文件的集合,迁移起来应该简单得多。 我不会复制Tomcat7安装本身,而只是在Ubuntu上安装Tomcat,然后调整配置以匹配当前版本。

就直接转换本身而言,这应该非常简单,并且会根据您是将弹性 IP 用于服务器还是在负载均衡器后面而有所不同,

最新更新