更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > Rocky Linux/AlmaLinux配置PostgreSQL Replication复制

Rocky Linux/AlmaLinux配置PostgreSQL Replication复制

更新时间:2023-01-20 10:54:10浏览次数:922+次

本文介绍在在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复制完成。