Bootstrap

OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境

在这里插入图片描述
以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤,通常可以使用流复制(Streaming Replication)或基于Patroni等工具来实现高可用,以下以流复制为例:

安装PostgreSQL

  1. 配置软件源:可以使用OpenEuler的默认软件源或配置PostgreSQL官方提供的软件源。如果使用默认源,确保源配置正确并可访问。对于PostgreSQL官方源,需根据版本和系统信息进行相应配置。
  2. 安装PostgreSQL:使用包管理工具进行安装,在OpenEuler上一般可以使用以下命令安装:
sudo dnf install postgresql-server postgresql-contrib
  1. 初始化数据库:安装完成后,需要初始化数据库集群,执行以下命令:
sudo postgresql-setup initdb

配置主节点

  1. 编辑主节点配置文件:主要配置文件为postgresql.confpg_hba.conf。通常位于/var/lib/pgsql/data/目录下。
    • postgresql.conf中,需要配置以下参数来启用流复制:
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 32
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/archive/%f'
- 在`pg_hba.conf`中,添加允许从节点连接的记录,例如:
host    replication     replicator      192.168.1.0/24       trust
  1. 创建复制用户:在主节点上,需要创建一个用于复制的用户,执行以下SQL命令:
CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'replicator_password';
  1. 重启主节点服务:使配置生效,执行以下命令:
sudo systemctl restart postgresql

配置从节点

  1. 停止PostgreSQL服务:如果从节点上的PostgreSQL服务正在运行,先停止它:
sudo systemctl stop postgresql
  1. 清空数据目录:确保从节点的数据目录为空,一般为/var/lib/pgsql/data/,可以使用以下命令清空:
sudo rm -rf /var/lib/pgsql/data/*
  1. 进行基础备份:从主节点进行基础备份,可以使用pg_basebackup命令,例如:
sudo pg_basebackup -h <主节点IP> -U replicator -D /var/lib/pgsql/data/ -P -X stream

在执行上述命令时,系统会提示输入复制用户的密码,输入之前设置的replicator_password即可。
4. 配置从节点参数:编辑从节点的postgresql.conf文件,添加以下内容:

standby_mode = on
primary_conninfo = 'host=<主节点IP> port=5432 user=replicator password=replicator_password'
  1. 启动从节点服务:执行以下命令启动从节点的PostgreSQL服务:
sudo systemctl start postgresql

验证高可用配置

  1. 检查复制状态:在主节点上,可以使用以下命令检查流复制的状态:
SELECT * FROM pg_stat_replication;

该命令会返回当前正在进行复制的从节点的相关信息,包括从节点的连接状态、复制进度等。
2. 进行故障转移测试:可以通过模拟主节点故障来测试高可用环境的故障转移功能。例如,在主节点上停止PostgreSQL服务:

sudo systemctl stop postgresql

观察从节点是否能正常接管业务,应用是否能够继续连接到从节点进行读写操作。测试完成后,可在主节点上重新启动PostgreSQL服务,使其恢复正常运行。

如果要使用Patroni等工具来实现高可用,步骤会有所不同,一般需要先安装Patroni以及相关的依赖,然后配置Patroni的配置文件,启动Patroni服务等。

;