接上期,(如果看不懂的,请从第一期看,否则可能和看天书没两样),最近在梳理一些问题的时候,发现一个现象,大部分出现问题后,解决就完了,网上很多文字,大多都是这样,先提出一个问题,然后就给出答案,然后就么有然后后了。而这样的结果一般是好不了的,这和狗熊掰棒子没啥区别。所以才有了这期,这期是要说说repmgr 的一些系统表,一些常见的被问及的问题,(一些深层的问题,还得继续研究)
截止到目前本文的时间点,repmgr 已经支持了postgresql 12, repmgr 的系统表我们看看有什么,如果你说我看不到,或者里面啥都没有,你一定是没有通过 repmgr 这个账号登录repmgr库
events表中包含了相关的在这个节点,所有关于repmgr 相关的事件的记录,这个表并不会自动清理,需要自己进行清理,或自己写脚本处理。下方的 nodes 表则记录了数据库集群中的已经注册的节点
另外还有一些常见的命令
repmgr -f /etc/repmgr.conf node status
具体的常见的命令可以去官网去看比我介绍的要好的多。
常见的疑问
1 repmgr 需要初始化数据或者有metadata 吗
为了有效地管理复制集群,repmgr需要将集群中服务器的信息存储在专用的数据库模式中。该模式由repmgr扩展自动创建,该扩展在初始化repmgr管理的集群
其中这些元数据包含
repmgr.events
repmgr.nodes
repmgr.monitoring_history
以及两个 VIEW
2 repmgr 的版本和POSTGRESQL 的版本对应,有严格的区分吗?
目前repmgr 最高的版本已经不是 4.4 ,而是 5.0 ,5.0 的版本兼容所有目前正式版的postgresql ,同时一个集群中的各个节点的repmgr 的版本应该是一致的,不能存在不同版本的混用的做法。
部分版本支持的postgresql 列表
3 repmgr 包可以不用二进制方式安装吗
可以,可以下载2象限的yum 源,可以直接 rpm 包安装,如果在yum 安装时出现问题,请检查下面的依赖包装没有装
flex
libselinux-devel
libxml2-devel
libxslt-devel
openssl-devel
pam-devel
readline-devel
4 在一台服务器上安装多个 postgresql cluster 是否也可以使用 repmgr
是的可以这样使用,但不建议
5 repmgr 的使用中是否对 postgresql,conf 的设置有一些要求
本身没有,但针对于复制来说,还是需要在重复一下
1 是否有足够的 replication_slots
2 wal_level 设置的是否对
3 host_standby 是否设置了
4 archive 是否开了
代码语言:javascript复制max_replication_slots = 10
代码语言:javascript复制wal_level = 'hot_standby'
代码语言:javascript复制hot_standby = on
代码语言:javascript复制archive_mode = on
archive_command =
6 对于pg_hba.conf 文件有什么要求
需要对于repmgr 有相关正确的权限,否则会对切换和数据的操作都有操作的隔阂,或失败
7 repmgr.conf 我放到postgresql 的配置文件路径下合适吗
不合适,repmgr 应该独立防止在非postgresql 配置路径下,防止误操作后的数据丢失和数据恢复后的配置文件丢失或覆盖
8 wal_log_hints 是否需要打开
这要视是否需要打开pg_rewind 如果需要则需要打开,默认建议打开
9 需要主库和备库的使用表空间但在不同的物理位置的映射表是否可以做?
可以,repmgr提供了一个tablespace_mapping配置文件选项,可以将源节点上的表空间映射到本地节点上的不同位置。
其实postgresql 的高可用方法有很多,这六期仅仅是说了其中一种,高可用可以有很多的变化,即使是repmgr 也可以搭配其他的多种中间件来进行高可用的使用。
学无止境,适合就好。