当前位置: 首页 > news >正文

postgresql14主从同步流复制搭建

 1. 如果使用docker搭建请移步 Docker 启动 PostgreSQL 主从架构:实现数据同步的高效部署指南_docker安装postgresql主从同步-CSDN博客

2.  背景

  • pgsql版本:PostgreSQL 14.13 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
  • 服务器: centos7

3. pgsql安装脚本

# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm# Install PostgreSQL:
sudo yum install -y postgresql14-server# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

4. 主库配置

登录修改管理员progres密码

登录方式1:

#postgres权限登录
su - postgres
#输入 psql
-bash-4.2$ psql
#用户 postgres 的口令:
psql (14.2)
输入 "help" 来获取帮助信息.postgres=#

登录方式2

psql -U postgres -h 主机IP --port 58063
  1.  修改postgresql.conf 
vim /var/lib/pgsql/14/data/postgresql.conf # 修改监听地址
listen_addresses = '*'port = 5432

2. 修改pg_hba.conf

vim /var/lib/pgsql/14/data/pg_hba.conf末尾添加 host    all             all             0.0.0.0/0            scram-sha-256

3. 重启数据库

sudo systemctl restart postgresql-14

4. 开放防火墙端口号

firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload

如果使用云服务器,需要配置云服务器的防火墙,开放5432端口号

5. 创建流复制账号

CREATE ROLE replication login replication encrypted password 'replication的密码';

6. 编辑postgresql.conf

# 新增或修改下列属性设置
# 监听所有IP
listen_addresses = '*'  
# 开启归档
archive_mode = on 
#归档命令
archive_command = 'test ! -f /var/lib/pgsql/14/data/pg_wal/%f && cp %p /var/lib/pgsql/14/data/data/pg_wal/%f'
# 9.6开始没有hot_standby(热备模式)
wal_level = replica
#最多有2个流复制连接
max_wal_senders = 10   
wal_keep_size = 16  
#流复制超时时间
wal_sender_timeout = 60s
# 最大连接数,据说从机需要大于或等于该值
max_connections = 300

 归档目录根据自己的实际情况配置,需要提前检查是否存在wal日志所在目录,我使用版本路径为/var/lib/pgsql/14/data/pg_wal/   有些版本为/var/lib/pgsql/14/data/wal_archive

7. 编辑pg_hba.conf增加从机IP

host   replication  replication   从机IP/32  scram-sha-256
host   replication  replication   从机IP/32  trust

8. 重启数据库

sudo systemctl restart postgresql-14

从库配置

1、验证在从库是否可以访问主节点

psql -U postgres -h 主机IP --port 5432

2. 停止服务器

systemctl stop postgresql-14.service

3. 清空从库数据存储文件夹

rm -rf /var/lib/pgsql/14/data/*

4. 从主服务器上copy数据到从服务器,基础备份

pg_basebackup -h 主库IP -U replica  -D /var/lib/pgsql/14/data --write-recovery-conf --progress --verbose
//授权文件夹
chown -R postgres:postgres /var/lib/pgsql/14/data
chmod 700 /var/lib/pgsql/14/data

注意:需要验证是否能正常启动数据库

5、此时data目录下会出现standby.signal文件,编辑文件

## 加入
standby_mode = 'on'

6、修改postgresql.conf文件

# 监听所有IP
listen_addresses = '*'
# 端口号
port=5432
#从机信息和连接用户
primary_conninfo = 'host=主节点IP port=5432 user=replication password=replication用户的密码'
#说明恢复到最新状态
recovery_target_timeline = latest
#大于主节点,正式环境应当重新考虑此值的大小
max_connections = 120
#说明这台机器不仅用于数据归档,还可以用于数据查询
hot_standby = on
#流备份的最大延迟时间
max_standby_streaming_delay = 30s
#向主机汇报本机状态的间隔时间
wal_receiver_status_interval = 10s
#r出现错误复制,向主机反馈
hot_standby_feedback = on

7. 重启数据库

sudo systemctl restart postgresql-14

5. 验证主从搭建是否成功

select client_addr,sync_state from pg_stat_replication;

http://www.lryc.cn/news/467749.html

相关文章:

  • 企业信息化管理中的数据集成方案:销售出库单对接
  • 3.cpp基本数据类型
  • MCK主机加固与防漏扫的深度解析
  • 《软件估算之原始功能点:精准度量软件规模的关键》
  • 序列化与反序列化
  • 安装nginx实现多ip访问多网站
  • 每日回顾:简单用C写 冒泡排序、快速排序
  • 前端_007_Axios库
  • NAND FLASH 与 SPI FLASH
  • QTCreator打不开双击没反应
  • vue npm run ...时 报错-系统找不到指定的路径
  • 54页可编辑PPT | 大型集团企业数据治理解决方案
  • STM32嵌入式移植GmSSL库
  • 【mod分享】极品飞车10高清模组,,全新道路,全新建筑,高清植被,全新的道路围栏,全新的天空,画质直逼极品飞车20。支持光追
  • 使用U-KAN训练自己的数据集 — 医疗影像分割
  • 游戏盾在防御DDoS与CC攻击中的作用与实现
  • 为什么说红帽认证(RHCE)是网络工程师的万金油证书?
  • 89.【C语言】编译和链接
  • 优秀学员统计
  • 电脑程序变化监控怎么设置?实时监控电脑程序变化的五大方法,手把手教会你!
  • 2.1.3 编码和调制(下)
  • 【网络安全渗透测试入门】之XSS漏洞检测、利用和防御机制XSS游戏(非常详细)收藏这一篇就够了!
  • [ComfyUI]Flux:超赞古风少女LORA,唯美江南水乡小桥流水轻舟江南美人
  • 从蚂蚁金服面试题窥探STW机制
  • 【MySQL数据库】MySQL高级语句(SQL语句进阶版)
  • Milvus 到 TiDB 向量迁移实践
  • springboot集成jsoup解析xml文件
  • 基于Springboot相亲网站系统的设计与实现
  • 解决提示”warning C317 attempt to redefine macro ‘XX‘“问题
  • 3D图片动画效果组件封装