PostgreSQL13-流复制主备切换-延迟备库_同步优选提交_级联复制
13.流复制主备切换 延迟备库 同步优选提交 级联复制
主备切换-文件触发的方式
1.停止主库
pg_ctl stop -m smart
2.备库创建主备切换文件(与备库recovery.conf中的trigger_file设置的一致)
touch /var/lib/pgsql/9.6/data/.trigger
同步完成后recovery.conf变为recovery.done
详细的配置文件位于 /usr/local/psql9.6/share/postgresql/recovery.conf.sample
3.原主库创建recovery.conf,修改primary_conninfo为新主库信息
4.重启原主库
主备切换-pgctl promote方式
1.停止主库
pg_ctl stop -m smart
2.在备库上执行 pg_ctl promote
recovery.conf中trigger_file不用指定
同步完成后recovery.conf变为recovery.done
3.原主库创建recovery.conf,修改primary_conninfo为新主库信息
4.重启原主库
备库切换为主库时忘记关闭旧主库
备库postgresql.conf设置 wal_log_hints = on
备库操作,填写原主库信息
pg_rewind --target-pgdata $PGDATA --source-server='host=192.168.195.132 port=5432 user=postgres dbname=auto' -P
备库 mv recovery.done recovery.conf
备库 pg_ctl start
延迟备库
vim recovery.conf
recovery_min_applt_delay (integer)
1.默认单位毫秒 ms ,其他单位s,min,h,d
2.开启此参数将阻塞同步流复制主库的写操作
3.过长的时间会使pg_wal日志过大
一主多备流复制,同步优选提交
vim postgresql.conf
synchronous_standby_names (string)
有三种形式
standby_name [, ...]
FIRST num_sync (standby_name [, ...])
ANY num_sync (standby_name [, ...])
分别对应
synchronous_standby_names = 's1 s2 s3'
--第一个为备库,第二个及以后为潜在备库
--s1宕机后,后续备库自动顶替
synchronous_standby_names = FIRST 2(s1 s2 s3)
--设置两个同步备库
--主库提交事务后,需要等待s1和s2将日志流写入WAL日志文件后再返回成功
--s1或s2宕机后s3升级为备库
synchronous_standby_names = ANY 2(s1 s2 s3)
--列表中的任意两个为同步备库
--需要等待任意两个备库写入WAL文件,再返回成功
级联复制
1.级联备库和备库都从主库同步初始数据
pg_basebackup -D /var/lib/pgsql/9.6/data -Fp -Xs -v -P -h 172.21.16.6 -p 5432 -U repuser
2.级联备库的primary_conninfo 指向主库,备库的则指向级联备库
分类:
PostgreSQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)