postgresql replication 数据库异地镜像有什么比较好的做法?

2015-11-04 14:07:45 +08:00
 clino
我的需求是最近因为网络不稳定,连接异地的 postgresql 老是出问题,现在感觉不得不做一下相关的数据库镜像,这样本地读至少不会被网络问题困扰,我只需要一个只读的 slave 就行了,对两边同步的一致性要求也没那么高

我之前大致看了一下 https://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling ,感觉有好多选择,然后里面提到的 http://momjian.us/main/writings/pgsql/replication.pdf 这里也有很多比较,有点看晕了

还看了一篇: https://www.digitalocean.com/community/tutorials/how-to-set-up-master-slave-replication-on-postgresql-on-an-ubuntu-12-04-vps 感觉我的场合用这个是不是就可以了? 有经验的达人给些评论哈,谢谢!
2654 次点击
所在节点    问与答
5 条回复
wd
2015-11-04 14:42:28 +08:00
pg 的 slave 是只读的,这个没问题么?
那你可选的方案两种。
1 主从 db 不直接连接,主库把 xlog 归档到从库所在机器。这个归档不成功一般不会影响主库。主要是配置 archive_command.
2 主从 db 通过 streaming 连接,这个需要 9.x 以上版本。

当然如果为了保险期间,可以两种配置。
clino
2015-11-04 14:55:58 +08:00
@wd 我现在用的是 9.1 所以可以用这个 streaming 的方式哈? 就是我贴的最后这个连接说的这个方式,应该是靠谱的哈
wd
2015-11-05 13:54:33 +08:00
@clino streaming 方式可能会有问题的时候是,主从如果差异非常大的时候,可能会断开主从,这个时候是没有办法通过他们之间的这种连接继续同步数据的,需要通过 xlog 方式让主从差异缩小,然后才能继续 streaming 。
clino
2015-11-05 13:58:37 +08:00
@wd 那断开以后的处理需要手动去做吗? 感觉如果有这种断开的异常岂不是很麻烦...
如果是这样的话,感觉 streaming 这个做得不够好啊
wd
2015-11-05 14:54:01 +08:00
@clino
你可以看看 omnipitr ,然后 streaming + xlog 同时做,有 streaming 走 streaming ,失败了走 xlog 。
另外,刚看到 pg 的文档说有个 replication slot 你可以看看。 http://www.postgresql.org/docs/9.4/static/warm-standby.html#STREAMING-REPLICATION-SLOTS

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/233558

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX