谁说Postgresql 没有靠谱的高可用

接上期(如果你刚开始看的话,那估计可能会丈二和尚,建议还是从1 开始看)

上期说到了见证服务器,见证服务器的功能到底有什么用,其实如同各种高可用中(这里说的是完备的高可用)大部分都是三台,因为怕什么,怕脑裂,因为高可用要面对的问题是很多的,尤其网络的问题,如果因为网络的原因造成服务器本身没有问题,但在网络断开的某个时间段造成了,主从切换,则就会造成双主的尴尬现象。所以在数据中心或比较关键的业务中,使用的数据库服务器的高可用也是要妥妥当当的。wintness不是一个成熟的备用节点,也没有集成到复制中,但是在决定哪个网络段占多数时,它有效地代表了“投票”。可以使用repmgr见证寄存器设置见证服务器。但前提是你必须使用repmgrd ,每个节点都需要运行这个程序(如果你不知道什么是repmgrd 请参看之前的文字 1 2 3 )

今天主要要说的就是见证服务器,repmgr  witness, handling network splits with repmgrd.

首先我们要搭建一台和前边两台没有任何关系的postgresql 的数据库。并且安装repmgr 也是和前面一样,(如果不知道怎么做,就看前边的内容,这里不再重复)

所以,到目前为止,你应该有一个 postgresql 的集群,两台机器,并且现在你又安装了一台postgresql 并且也安装了 repmgr,相关的配置也和之前是一样的。

repmgr见证寄存器将见证服务器的节点记录添加到repmgr元数据中,并在必要时通过安装repmgr扩展并将repmgr元数据复制到见证服务器来初始化见证节点。需要执行此命令才能使用repmgrd的见证服务器。
在执行repmgr见证寄存器时,还必须提供集群主服务器的数据库连接信息。

在witeness 的机器上执行下面的命令

 repmgr -f /etc/repmgr.conf witness register -h 192.168.198.22 -U repmgr -d repmgr --verbose

谁说Postgresql 没有靠谱的高可用

执行命令后就将 witeness 主机加入到集群中,执行完这条命令后,下图应该在所有的节点都应该看到,因为witness主机已经加入到 repmgr的metadata 中。

谁说Postgresql 没有靠谱的高可用

下面我们开始做测试,我们将主节点关闭

谁说Postgresql 没有靠谱的高可用

我们在看 witeness 节点的日志

谁说Postgresql 没有靠谱的高可用

最后 witness 节点虽然是postgresql 的数据库,但如果仅仅作为见证服务器,则可以不需要配置那么高,如同mongodb 的abiter 服务器。

到这里上一期的问题,还差一个没有回答,到底IP 怎么能切换?

谁说Postgresql 没有靠谱的高可用

如果有兴趣可以加个群,共同提高

谁说Postgresql 没有靠谱的高可用

相关文章: