更新时间:2023-01-20 10:54:10浏览次数:523+次
本文介绍在在Rocky Linux 8/AlmaLinux 8系统上配置PostgreSQL Replication复制的方法。
具体操作步骤
步骤1、在所有Rocky Linux 8/AlmaLinux 8节点上安装PostgreSQL
为了实现流式复制,需要在所有节点上安装PostgreSQL。这可以通过以下步骤完成。
列出默认Rocky Linux 8/AlmaLinux 8存储库中可用的可用版本:
$ dnf module list postgresql
对于PostgreSQL 13:
从提供的列表中,您可以安装一个首选版本,比如PostgreSQL 13:
sudo dnf -qy module enable postgresql:13
sudo dnf install postgresql-server postgresql13-contrib
对于PostgreSQL 14:
在本文中,我们将使用PostgreSQL 14,它通过添加额外的存储库来安装:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
为了避免冲突,禁用默认存储库:
sudo dnf -qy module disable postgresql
使用以下命令在Rocky Linux 8/AlmaLinux 8上安装PostgreSQL 14:
sudo dnf install -y postgresql14-server postgresql14-contrib
启用后,使用以下命令初始化PostgreSQL数据库:
sudo /usr/pgsql-13/bin/postgresql-14-setup initdb
##OR
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
使用以下命令启动并启用服务:
sudo systemctl start postgresql-14
sudo systemctl enable postgresql-14
验证服务是否正在运行:
$ systemctl status postgresql-14
允许服务通过防火墙:
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
安装其它版本,可参考https://www.hmxthome.com/linux/4959.html里面的内容。
步骤2、配置PostgreSQL主要主机
现在继续并对主要主机进行以下配置:
sudo vim /var/lib/pgsql/14/data/postgresql.conf
进行以下调整:
#第60行:取消注释和更改
listen_addresses = '*'
#第205行:取消注释
wal_level = replica
#第210行:取消注释
synchronous_commit = on
#第298行:取消注释(来自流式客户端的最大并发连接数)
max_wal_senders = 10
#第302行:取消注释和更改(过去日志文件段的最小数量)
wal_keep_segments = 10
#第312行:取消注释和更改
synchronous_standby_names = '*'
同时,打开以下文件进行编辑:
sudo vim /var/lib/pgsql/14/data/pg_hba.conf
进行以下截图的更改:
请记住替换主主机和副本主机的IP地址。保存文件并重新启动服务:
sudo systemctl restart postgresql-14
现在保存更改并创建复制用户:
sudo su - postgres
createuser --replication -P rep_user
提供所需的密码并退出:
exit
步骤3、配置PostgreSQL副本主机
现在继续并对复制副本主机进行配置。首先停止PostgreSQL服务:
sudo systemctl stop postgresql-14
删除现有数据:
sudo rm -rf /var/lib/pgsql/14/data/*
现在从主主机获取备份(本例中为192.168.205.2):
sudo su - postgres
pg_basebackup -R -h 192.168.205.2 -U rep_user -D /var/lib/pgsql/14/data/ -P
为在主主机上创建的复制用户提供密码以获取备份:
Password:
27205/27205 kB (100%), 1/1 tablespace
如上所示完成后,退出:
exit
编辑PostgreSQL配置:
sudo vim /var/lib/pgsql/14/data/postgresql.conf
进行以下更改:
#第60行:取消注释和更改
listen_addresses = '*'
#第325行:取消注释
hot_standby = on
此外,编辑hba.conf文件:
sudo vim /var/lib/pgsql/14/data/pg_hba.conf
按上图所示编辑文件即可。
上述行已存在,因为文件已从主主机复制。保存文件并启动PostgreSQL服务:
sudo systemctl start postgresql-14
步骤4、在Rocky Linux 8/AlmaLinux 8上测试流复制
完成上述配置后,我们现在继续并验证复制是否正在进行:
sudo su - postgres
psql -c "select usename, application_name, client_addr, state, sync_priority, sync_state from pg_stat_replication;"
样本输出:
为此,我们将在主主机上创建一个数据库,并检查它是否显示在副本主机上。
访问主要主机上的PostgreSQL shell:
psql
创建测试数据库:
# CREATE DATABASE testdb;
CREATE DATABASE
现在,在复制副本主机上,检查它是否存在:
$ sudo -u postgres psql
psql (14.3)
Type "help" for help.
postgres=# \l
样本输出:
至此,配置PostgreSQL Replication复制完成。