postgresql主从配置

本文以cento7为例子,演示如何配置postgresql主从

环境准备:

  • 192.168.49.224(postgresql主节点)
  • 192.168.49.186(postgresql从节点)

安装方式参考:https://blog.ywdevops.cn/index.php/2024/05/10/postgresql/

主节点

1、登录主节点,创建用户,设置密码,登录权限和备份权限,如图:

查看账号是否创建成功,如图:

查看权限是否创建成功,如图:

2、编辑pg_hba.conf文件,配置允许用户test_user从指定IP进行数据同步,如图:

sudo vim /data/postgresql/data/pg_hba.conf      #初始化数据路径为/data/postgresql/data

3、编辑文件postgresql.conf,修改如下参数:

listen_addresses = '*'   #监听的IP地址
max_connections = 100    #最大连接数,从库的max_connections必须要大于主库的
wal_level = replica      #记录足够的信息以支持常见的备库用途,包括流复制和热备。
synchronous_commit = on  #开启同步复制
max_wal_senders = 32     #同步最大的进程数量
wal_sender_timeout = 60s #流复制主机发送数据的超时时间

最后重启postgresql即可,如下:

systemctl restart postgresql

从节点

1、删除从节点的数据目录,如下:

sudo rm -rf /data/postgresql/data

2、运行以下命令,使用pg_basebackup基础备份工具从主库创建从库的基础备份,如下:

su - postgres &&  cd /usr/local/postgresql16.3/bin
./pg_basebackup -D /data/postgresql/data -h 192.168.49.224 -p 5432 -U test_user -X stream -P -R

根据提示输入主库密码,出现如下提示,表示已同步成功,如图:

3、编辑从库的配置文件,分别找到以下参数,并将参数修改为以下内容,如下:

sudo vim /data/postgresql/data/postgresql.conf
primary_conninfo = 'host=192.168.49.224 port=5432 user=test_user password=Abcd1234' #对应主库的连接信息
recovery_target_timeline = 'latest' #流复制同步到最新的数据
max_connections = 1000             # 最大连接数,从节点需设置比主节点大
hot_standby = on                   # 开启热备
max_standby_streaming_delay = 30s  # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s  # 从节点向主节点报告自身状态的最长间隔时间
hot_standby_feedback = on          # 如果有错误的数据复制向主进行反馈

4、重启从节点,如下:

sudo systemctl restart postgresql

验证主从

1、首先登录主节点,查看是否存在sender进程,已存在,如图:

2、登录从节点,查看是否存在receiver进程,已存在,如图:

上图的状态表示主库和从库已经建立起连接

3、登录主节点,在postgresql命令行查看从库状态,如图:

4、在主节点创建一个新的数据库temp_db,如图:

登录从节点,可以看到数据库已同步过来,如图:

标签