postgresql实现单主单从

实现步骤

1.主库创建一个有复制权限的用户

sql 复制代码
CREATE ROLE 用户名
 login # 有登录权限的角色即是用户
 replication #复制权限
encrypted password '密码';

2.主库配置开放从库外部访问权限

修改 pg_hba.conf 文件 (相当于开放防火墙)

sql 复制代码
# 类型  数据库        用户            地址                 方法

# "local" is for Unix domain socket connections only
host   all             上面创建的用户名           从库地址            trust


# Allow replication connections from localhost, by a user with the
# replication privilege.
host   replication             上面创建的用户名           从库地址            trust

上面是允许登录的 地址

下面是允许复制的地址

3.设置主库wal复制

修改主库配置文件 postgresql.conf

sql 复制代码
wal_level = replica # wal级别:minimal, replica, or logical

max_wal_senders = 4		# 最大发送进程数
wal_keep_size = 16		# 多大wal文件被写满,单位M; 0 disables
wal_sender_timeout = 60s	# wal发送超时时间

max_connections = 100 # 最大连接数,从库需要大于主库这个值

4.主库备份覆盖从库数据文件

1.删除从库的数据文件

2.使用物理备份命令备份主库数据文件到从库

sql 复制代码
pg_basebackup -h 主库地址 -p 主库端口 -D 复制到从库数据目录  -U 有复制权限的用户 -Fp -Xs -Pv -R --checkpoint=fast

5.配置从库备份主库信息

sql 复制代码
max_connections = 200

recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID 恢复哪个时间点


primary_conninfo = 'host=10.0.12.12 port=5432 user=用户名 password=密码'			# 连接主库信息
hot_standby = on			# "off" disallows queries during recovery
max_standby_streaming_delay = 30s	# 最大延迟时间
wal_receiver_status_interval = 10s	# 向主库发送wal接收状态时间
hot_standby_feedback = on		# 发送错误信息
wal_receiver_timeout = 60s		# 接收wal超时时间
wal_retrieve_retry_interval = 5s	# 等待重试时间间隔

6.重启从库

测试

查询复制信息

sql 复制代码
select client_addr,sync_state from pg_stat_replication;

表示主从部署成功

主宕机,从升主

模拟主库宕机,从库手动升级为主库,原主库恢复变成从库。

1.主库停机

2.从库使用命令 pg_ctl promote升级为主库

3.这时恢复原主库作为从库,需要同步主库数据

sql 复制代码
# 先删除这个从库数据,再同步主库数据
pg_basebackup -h 新主库地址 -D /var/lib/postgresql/data -p 新主库端口 -U 备份用户 -Fp -Xs -Pv -R --checkpoint=fast

还有一种 利用pg_rewind 命令实现增量同步数据这里没有实现

4.重启从库

5.验证

主库执行

select client_addr,sync_state from pg_stat_replication;

相关推荐
HackTwoHub几秒前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构
Elastic 中国社区官方博客20 分钟前
使用 Elasticsearch 作为 Grafana 的直接替代 Prometheus 后端
大数据·数据库·sql·elasticsearch·搜索引擎·grafana·prometheus
杨婷12326 分钟前
2026 企业微信会话存档服务商选型指南:一维助手方案深度解析
大数据·数据库·企业微信
2601_963771371 小时前
Optimizing Logistics and Transportation Sites on WordPress
前端·数据库·windows·php
AC赳赳老秦1 小时前
采购专员自动化:OpenClaw 自动比价、生成询价单、跟踪供应商报价进度实战指南
开发语言·数据库·人工智能·python·自动化·github·openclaw
蚁库1 小时前
Oracle 11g RAC 多路径配置总搞不定?iSCSI + Multipath + ASM 磁盘组,14节视频带你完整通关
数据库·oracle
C++ 老炮儿的技术栈1 小时前
MFC 自定义纯色居中文字进度条控件
c语言·数据库·c++·windows·算法·c·visual studio
灯澜忆梦2 小时前
【MySQL1】| DDL 数据定义语言
数据库·sql·mysql
2601_963771372 小时前
Speeding Up Creative Agency Portfolios: A Performance Guide
前端·数据库·php
运维大师2 小时前
【安全与故障排查】03-【复盘】数据库被入侵:从发现到溯源全过程
数据库·安全·adb