我正在研究 PostgreSQL 复制解决方案。我知道这些解决方案有两种
- 低级别——涉及流日志传输、PostgreSQL 9.x 中可用的热备份功能
- 高级 - 在 SQL 查询级别工作的 Slony、Londiste
我的数据库不是很忙也不是很大(至少现在是这样)。但我想避免因 Amazon EC2 故障(例如最近发生的故障)而导致停机。我的解决方案是在不同的可用区中维护一个从服务器,它将与我的主数据库实例保持同步。这样我就可以在 master 宕机时故障转移到它。需要考虑的一点是,这将需要从主服务器到从服务器的连续数据复制,这将是跨 EC2 可用性区域的网络流量。它不是免费的。现在每 GB 花费 1 美分,但在阅读 PostgreSQL 说明书中的一些计算后,我了解到即使数据库流量很低,成本也会增长得非常高。例如,在“PostgreSQL 9 Administration Cookbook”的“Hot physical backup and continuous archiving”一章中,我读到了:
如果 archive_timeout 设置为 30 秒,我们将每天生成最少 2*60*24 = 2880 个文件,每个文件大小为 16 MB,因此每天总体积为 46 GB(最小)
[而且我假设数据库上的流量最少]
我唯一的要求是,在主服务器上执行的每个写入 SQL 查询都应该在从服务器上重播。如果这是在事件回调上完成的,那将是完美的,因为只有当数据库被修改时,主从之间才会有数据传输,而不是每 30 秒左右,即使没有对数据库进行更改也是如此。
因此,我认为 Londiste 可能是适合我的解决方案,但我不能 100% 确定它是这样工作的。
你有什么建议?