PostgreSQL主从复制教程:CentOS 7一键部署流复制从库完整步骤


头像
关你个西红柿🍅
原创
发布时间: 2026-09-05 11:22:50 | 阅读数 0收藏数 0评论数 0
封面
想在CentOS 7上给PostgreSQL搭个主从同步?这篇教程就是为你准备的。
1

安装postgresql

下载源码包

进入到postgresql官网下载需要版本的tar包,下载后上传到服务器。

解压源码

tar -zxvf postgresql-16.3.tar.gz

配置编译选项

// 进入目录
cd postgresql-16.3
// 进行编译
./configure --prefix=/opt/pgsql/post

编译与安装

# 编译源码
make -j$(nproc)

# 安装到指定目录
make install
2

修改主库配置

使用vim 编辑配置文件

vim /opt/pgsql/postgresql/data/postgresql.conf

在配置文件中加入以下内容

# 允许所有ip连接
listen_addresses = '*'

# 端口号
port=5432
# 设置最大连接数量
max_connections =100
# 日志级别
wal_level= replica
#保留日志大小
wal_keep_size = 1024MB

vim基本操作:

  1. i 进入插入模式
  2. esc 退出退出插入
  3. :wq 保存文件并退出
3

修改主库认证配置文件

使用vim 编辑配置文件

vim /opt/pgsql/postgresql/data/pg_hba.conf

在认证配置文件中加入以下内容

# 允许从库复制连接 (使用指定用户) 使用md密码验证
host replication repl_user 192.168.150.152/32 md5
# 允许所有ip通过密码连接 使用md5密码验证
host all all 0.0.0.0/0 md5

vim基本操作:

  1. i 进入插入模式
  2. esc 退出退出插入
  3. :wq 保存文件并退出


4

创建连接用户


// 切换用户
sudo -u postgres /opt/pgsql/postgresql/bin/psql
// 创建新用户
CREATE ROLE repl_user WITH REPLICATION LOGIN PASSWORD '1234!'; CREATE ROLE
// 重启服务
systemctl restart postgresql
5

配置从库

先停止服务,并删除数据(记得备份);

// 停止服务
systemctl stop postgresql
// 清空数据目录
sudo rm -rf /opt/pgsql/postgresql/data/
// 拉取主库数据
sudo -u postgres /opt/pgsql/postgresql/bin/pg_basebackup -h 192.168.150.151 -D /opt/pgsql/postgresql/data -U repl_user -P -R -X stream -C -S standby_slot
  1. -h 192.168.150.151: 指定主库 IP 地址。
  2. -D /opt/pgsql/postgresql/data: 指定备份数据存放目录(从库数据目录)。
  3. -U repl_user: 使用复制用户进行连接。
  4. -P: 显示进度条。
  5. -R: 自动创建 standby.signal 文件和配置连接信息,使该实例可直接作为从库启动。
  6. -X stream: 在备份期间流式传输 WAL 日志。
  7. -C -S standby_slot: 在主库创建并使用名为 standby_slot 的逻辑复制槽。

验证配置文件

  1. 确保 /var/lib/postgresql/15/main/standby.signal 存在(内容为空,仅作为标识)。
  2. 检查 postgresql.auto.conf 是否包含主库连接信息:


6

验证主从

主库检查复制状态

sudo -u postgres /opt/pgsql/postgresql/bin/psql
SELECT client_addr, sync_state, sent_lsn, write_lsn, flush_lsn, replay_lsn
FROM pg_stat_replication;
  1. sync_stateasync(异步)或 sync(同步)。
  2. sent_lsnreplay_lsn 差值表示同步延迟。

从库验证只读模式

sudo -u postgres /opt/pgsql/postgresql/bin/psql
SELECT pg_is_in_recovery(); -- 返回 `t` 表示是从库
CREATE TABLE test (id int); -- 应报错(从库不可写)

主库创建表数据

create table demo (id serial PRIMARY KEY ,data text);create table

从库查询数据

select * from demo;
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
头像
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报