高可用

什么是高可用,这个问题可以说个好几天的,简单来讲一句话:

通过设计减少系统不能提供服务的时间

repmgr

repmgr是第二象限公司开源的一套流复制集群管理工具,看一下官方的介绍:

repmgr是一个开源工具套件,用于管理PostgreSQL服务器群集中的复制和故障转移。它通过设置备用服务器,监视复制以及执行管理任务(如故障转移或手动切换操作)的工具,增强了PostgreSQL的内置热备用功能。

架构如下:

postgresql 字符连接 pgsql连接字符串_服务器

repmgr提供了两个主要工具:

  • repmgr -用于执行管理任务的命令行工具,例如:
  • repmgr register--注册主备服务器
  • repmgr standby promote--提升备用服务器作为主服务器继续提供服务
  • repmgr standby switchover--切换主备服务器
  • repmgr cluster show--显示复制群集中服务器的状态
  • repmgrd -一个守护程序,用于主动监视复制群集中的服务器并执行以下任务:
  • 监视和记录复制性能
  • 通过检测主服务器的故障并升级最合适的备用服务器来执行故障转移
  • 将有关集群中事件的通知提供给用户定义的脚本,该脚本可以执行任务,例如通过电子邮件发送警报

安装

获取repmgr安装包

https://yum.postgresql.org/13/redhat/rhel-8.2-x86_64/

我的系统是CentOS Linux release 8.2.2004 (Core)

获取对应的包即可安装

repmgr13-5.2.0-1.rhel8.x86_64.rpm

配置

repmgr的配置文件结构如下图:

postgresql 字符连接 pgsql连接字符串_postgresql 连接字符串_02

配置虽多,Required configuration items项下的4个参数配上就能搭集群

每个repmgr.conf文件必须包含以下参数:

node_id=                      node_name=''                  conninfo=''                    data_directory=''
  • node_id(int)
    大于零的唯一整数,用于标识节点。
  • node_name(string)
    任意(但唯一)字符串;我们建议使用服务器的主机名或与服务器明确相关的其他标识符,以避免混淆。
  • conninfo(string)
    数据库连接信息作为conninfo字符串。群集中的所有服务器必须能够使用此字符串连接到本地节点。
  • data_directory(string)
    节点的数据库目录。

postgresql 字符连接 pgsql连接字符串_字符串_03

下回继续啃别的参数