pg13.x主从节点搭建以及数据同步

本文详细介绍了如何在CentOSARM环境中安装PostgreSQL,并配置一主一从集群,包括创建复制用户、调整主节点配置、从库初始化和验证主从同步。
摘要由CSDN通过智能技术生成

步骤1:安装postgres

可参考:centos arm 安装Postgres
此处我搭建了2台postgres,分别为:10.211.110.55、10.211.110.56

步骤2:主库配置

比如在 PostgreSQL 中实现一主一从的集群模式,此处选定10.211.110.55为主节点,另一个为从节点,可以使用流复制(Streaming Replication)来实现主节点数据实时同步到从节点。以下是一般步骤:

1、创建用于复制的用户:

在主节点上创建用于复制的用户,以便从节点可以使用该用户连接到主节点进行流复制。

CREATE USER replication_user REPLICATION LOGIN CONNECTION LIMIT 10 ENCRYPTED PASSWORD 'your_password';

替换 replication_user 和 ‘your_password’ 为实际的用户名和密码。

特别注意:limit 后面的数字一定要大于从节点的数量,比如你的从节点为1个,数字必须大于等于2,我此处设置成了10。

2、修改主节点的 PostgreSQL 配置文件:

打开主节点上的 postgresql.conf 文件,找到并确保以下配置项设置为适当的值

listen_addresses = '*'       # 允许所有IP连接
wal_level = replica          # 设置为 replica,启用 WAL 日志流复制
max_wal_senders = 3          # 允许的最大 WAL 发送者数目

当然此处还可以添加其他配置,如果想要对流复制的参数进一步调整,可参考:postgresql.conf注释详解

3、修改主节点的 pg_hba.conf 文件:

打开主节点上的 pg_hba.conf 文件,确保允许从节点连接。添加如下规则:

找到# IPv4 local connections:在下面添加
host    all             all             0.0.0.0/0               trust

这个规则的作用是允许任何 IP 地址的主机连接到 PostgreSQL 数据库服务器,并且授予他们所有数据库和用户的访问权限,而且认证方式为 trust,这意味着不需要密码即可连接到数据库。在考虑安全性的前提下,指定数据库、用户和具体ip端口,然后把认证方式修改成加密认证:如md5。

找到# replication privilege.在下面添加
host    replication     replicator     10.211.55.18/32         trust

此处就指定了用户和ip,用户为上面创建的用户。

4、重启 PostgreSQL 服务:

pg_ctl -D /pgdata/ -l logfile.log restart

-D后的路径修改为自己的路径即可。

步骤3:从库配置

1、停止从库服务

pg_ctl -D /pgdata/ -l logfile.log stop

2、清空从库数据存储文件夹

rm -rf /pgdata/*

3、创建 PostgreSQL 数据库的基础备份

pg_basebackup -h 10.211.110.55 -U replicator  -D /pgdata --write-recovery-conf --progress --verbose
单独对上述命令做个解释:

pg_basebackup:pg_basebackup 是 PostgreSQL 提供的一个工具,用于创建 PostgreSQL 数据库的基础备份。

-h 10.211.110.55:-h 选项用于指定目标 PostgreSQL 服务器的主机地址。
在这个例子中,目标 PostgreSQL 服务器的 IP 地址是 10.211.110.55。

-U replicator:-U 选项用于指定连接到目标 PostgreSQL 服务器时使用的用户名。
在这个例子中,使用的用户名是 replicator。

-D /pgdata:-D 选项用于指定将备份数据存储到的目标目录。
在这个例子中,备份数据将被存储在 /pgdata 目录中。

–write-recovery-conf:–write-recovery-conf 选项用于在备份目录中生成standby.signal文件,该文件用于配置 PostgreSQL 流复制的主从关系。这对于创建用于流复制的基础备份是很重要的(在12版本之前,生成的是recovery.conf文件)。

–progress:–progress 选项用于显示备份过程的进度信息。
当执行备份时,你将看到备份进度的更新。

–verbose:–verbose 选项用于在标准输出中显示详细的备份信息。
这对于了解备份过程中发生的情况很有帮助。

4、修改standby.signal文件

文件在指定的数据存储目录下,在配置文件中添加以下配置

standby_mode = 'on'

这一行配置告诉 PostgreSQL 数据库,该实例将作为备用服务器。
在备用模式下,数据库实例将尝试连接到主服务器并获取 WAL 日志,以保持与主服务器的同步。
当然这个参数也可以不用配置,在 PostgreSQL 12 及更高版本中,standby_mode = ‘on’ 通常是由 PostgreSQL 自动管理的,而不需要手动在 standby.signal 文件中添加。当 PostgreSQL 实例检测到 standby.signal 文件存在时,它会自动以备用模式启动。

5、修改postgres.conf文件

# primary_conninfo: 配置与主数据库建立流复制连接的详细信息
#   - host: 主数据库的主机地址
#   - port: 主数据库的端口号,默认为 5432
#   - user: 连接到主数据库时使用的用户名
#   - password: 连接到主数据库时使用的密码
primary_conninfo = 'host=主节点IP port=5432 user=replicator password=replicator用户的密码'

# recovery_target_timeline: 配置备库使用的时间线(timeline)
#   - latest: 使用主数据库当前时间线上的最新 WAL 日志
recovery_target_timeline = latest

# max_connections: 配置备库的最大允许连接数
#   - 控制备库上的并发连接数
max_connections = 120

# hot_standby: 配置是否启用热备(热备份)模式
#   - on: 启用热备模式,使备库可以接受读请求
hot_standby = on

# max_standby_streaming_delay: 配置备库流复制的最大延迟时间
#   - 30s: 允许备库在流复制时最多延迟 30 秒,超过这个延迟将不再接收新的 WAL 日志
max_standby_streaming_delay = 30s

# wal_receiver_status_interval: 配置 WAL 接收器的状态更新间隔
#   - 10s: 每隔 10 秒更新一次 WAL 接收器的状态信息
wal_receiver_status_interval = 10s

# hot_standby_feedback: 配置是否启用热备反馈
#   - on: 启用热备反馈,用于在主库上清理不再需要的 WAL 日志
hot_standby_feedback = on

6、重启数据库

pg_ctl -D /pgdata/ -l logfile.log restart

步骤4:验证

此时主从节点配置已完成,数据以可自动同步。
可以采用以下方式做个简单验证:

连接主库
psql - U postgrres
新增一个用户
create user test with password '****';

执行\du

                              角色列表
  角色名称   |                    属性                    | 成员属于 
-------------+--------------------------------------------+----------
 postgres    | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
 replication | 复制                                      +| {}
             | 10个连接                                   | 
 test        |                                            | {}
连接从库,并执行\du
                              角色列表
  角色名称   |                    属性                    | 成员属于 
-------------+--------------------------------------------+----------
 postgres    | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
 replication | 复制                                      +| {}
             | 10个连接                                   | 
 test        |                                            | {}

可以发现新增的用户在从库中也已存在。

  • 51
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PostgreSQL主从复制是一种实现数据库高可用性和数据冗余的技术。它通过在主数据库和一个或多个从数据库之间复制数据来实现同步。 要实现PostgreSQL主从同步,需要进行以下步骤: 1. 配置主服务器:在主服务器上,需要修改postgresql.conf配置文件和pg_hba.conf文件。在postgresql.conf中,需要设置参数wal_level、max_wal_senders和wal_keep_segments。在pg_hba.conf中,需要允许从服务器的IP地址连接到主服务器。 2. 创建复制用户:在主服务器上,创建用于复制目的的专用用户,并为其分配复制权限。 3. 创建从服务器:在从服务器上,使用pg_basebackup命令从主服务器创建一个基本备份。 4. 配置从服务器:在从服务器上,需要修改postgresql.conf配置文件和recovery.conf文件。在postgresql.conf中,需要设置参数standby_mode和primary_conninfo。在recovery.conf中,需要设置参数standby_mode和primary_conninfo。 5. 启动主从同步:启动主服务器和从服务器,并确保它们能够互相连接。从服务器将会开始接收并应用主服务器的WAL日志。 6. 监控同步状态:可以使用pg_stat_replication视图来监控主从同步的状态。该视图提供了有关每个从服务器的信息,包括复制延迟和复制流程的状态。 注意:在进行主从同步的过程中,需要确保网络连接可靠,以及主服务器的性能足够满足复制要求。 这是一个简要的概述,实际配置和操作可能会更加复杂。建议在实施主从复制之前详细阅读PostgreSQL官方文档,并参考最佳实践来确保成功配置主从同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦诗亦诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值