![保持两台服务器同步 - 辅助服务器仅在备份或中断时启动](https://linux22.com/image/557886/%E4%BF%9D%E6%8C%81%E4%B8%A4%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8C%E6%AD%A5%20-%20%E8%BE%85%E5%8A%A9%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%85%E5%9C%A8%E5%A4%87%E4%BB%BD%E6%88%96%E4%B8%AD%E6%96%AD%E6%97%B6%E5%90%AF%E5%8A%A8.png)
我刚刚开始一份新的软件开发工作,但基本上我被分配了大量系统管理员的工作,因为开发团队只有 2 个人 + CTO。我几乎没有这方面的经验,在大学主要专注于桌面编程。所以希望你们能帮助我完成我在这里尝试做的事情...
因此,我们将拥有两个 Amazon EC2 实例,它们的启动方式完全相同(但由于 Amazon 最近非常不稳定,因此设置为不同的位置),其中一个充当主实例,另一个充当备份实例。它们都运行 Windows Server 2008,但已配置 XAMPP 以提供 mySQL/PHP Web 服务。这个想法是,在发生中断或类似情况时,我们可以更改 DNS 设置以指向备份实例,以最大限度地减少停机时间。由于存在事务数据库和文件上传,我需要保持所有内容同步。问题是备份实例不会一直运行。有人告诉我,我们需要始终将其关闭(除了我们“同步”服务器时),以节省成本。
据我所知,数据库之间的主到主复制可以正常工作,因为当实例上线时,它基本上会“同步”。我认为这样做有效吗?同步目录的最佳方法是什么?我一直在考虑的另一个问题是,我只是将主服务器“备份”到备份服务器,当备份服务器实际正在使用时(发生中断),如何自动逆转该过程?
就像我说的,我对这类事情完全是菜鸟,但我还是很想了解这些事情。我工作中的上司似乎对此一无所知,所以我很想成为“可靠的人”。任何帮助、链接或书籍推荐都将不胜感激
答案1
我们的想法是,在发生中断或类似情况时,我们可以更改 DNS 设置以指向备份实例,以最大限度地减少停机时间
天啊,我不会把最短停机时间设为 3 小时以尽量减少停机时间。
故障转移到待机状态绝不是实现容错的好方法。使用负载平衡来运行所有节点,并将流量引导出故障节点。
不要尝试使用 DNS 动态重新配置架构 - 这会花费太长时间。
一个简单的解决方案是实施轮询 DNS 网络服务器,并在 DBMS 上使用主主复制,每个节点上都有一个可配置的数据库连接,这样您就可以从发生故障的 DBMS 切换出去。如果必须进行实时同步,则可以使用主从复制 - 并自动提升从属服务器。
答案2
快速而简单的方法是每小时备份一次数据库,然后将备份文件和其他目录 rsync(对于 Windows,请尝试 Deltacopy rsync)到备份服务器。然后在备份服务器上编写一个脚本来恢复每小时运行一次的数据库备份文件。
rsync 将仅传输文件增量并在传输过程中进行压缩。