我有一项任务,将 Linux 服务器从一台专用服务器移动到另一台。
总的来说我的计划如下:
- 夜间 - 关闭 httpd 和 mysql。通过 SSH 进行 RSYNC。
- 白天-打开http和mysql。
- 晚上关闭 httpd 和 mysql。通过 SSH 进行 RSYNC。
- 晚上。在两台服务器上打开 httpd 和 mysql。更改 DNS 条目。
- 白天。监控服务器状态。
因此,对于同步 mysql 和 httpd,我主要使用 rsync(不使用 mysqldump)。
听起来不错?有什么注意事项吗?
答案1
我建议两种解决方案。就我个人而言,我更喜欢逻辑克隆方法,因为它可以减少停机时间,并且数据库复制是一种多功能功能,可用于其他目的。但是,与您建议的方法类似的精确克隆方法是一种通用的强力方法,可用于迁移任何服务器。
精确克隆
- 减少 DNS 条目的 TTL,让您的生活更轻松。
- 将源同步到目标。您甚至不必关闭源上的服务;任何不一致都会在步骤 (4) 和 (7) 中得到修复。
- 您也可以选择对新服务器进行一些测试。确定需要在目标服务器上进行哪些配置更改才能使其正常运行。您甚至可能希望重新启动目标计算机以确保一切顺利。
- 再次将 rsync 源复制到目标,以撤消在 (3) 中对新服务器造成的任何“损害”,找出更多差异,并了解运行增量 rsync 需要多少时间(这是预计停机时间的指标)。
- 关闭两台机器上的所有服务。确保源机器上的服务保持关闭状态;您不希望新旧机器上出现数据分歧的“裂脑”。
- 更改您的 DNS 条目。如果您不打算回滚,则可以对新条目使用正常的 TTL。
- 再次将源 rsync 到目标。
- 如步骤 (3) 中所示,在目标机器上应用您需要的任何配置更改。
- 在目标机器上启动服务。
逻辑克隆
查看设置MySQL 复制。如果您尚未在 MySQL 服务器上启用二进制日志记录,则必须短暂地重新启动数据库以启用它。无论如何,我强烈建议启用二进制日志记录,因为它对于执行未来的操作(例如几乎零停机时间升级 MySQL)非常方便。
如果你设置循环复制,如果 MySQL 是您的应用程序的唯一数据存储,您甚至可以同时运行旧的和新的 Web 服务器。