给数据库增加一份实时副本:PostgreSQL主从流复制实战
只有一台PostgreSQL服务器时所有数据和业务连接都集中在同一个节点。服务器宕机、磁盘故障或系统维护都可能让数据库暂时不可用如果备份不完整恢复过程还会进一步拉长。主从流复制提供了一种相对直接的容灾思路。主库继续承担正常写入同时把产生的WAL日志发送给从库从库持续接收并回放这些变化从而保留一份接近实时的数据副本。本文会以两台安装PostgreSQL 14的Linux服务器为例先在主库配置监听地址、WAL参数和复制账号再通过pg_hba.conf限制从库使用专用用户连接。随后使用pg_basebackup生成一致性基础备份将数据传输到从库并通过standby.signal和primary_conninfo建立持续复制关系。完成启动后再分别从主库和从库验证复制状态及数据同步结果。主从链路运行正常后还会介绍从库提升、复制延迟查询和新增从库等常用操作并使用 cpolar 为受控的远程连接建立TCP地址方便在没有公网IP的环境中进行测试和维护。1.环境准备1.1 基础环境要求节点类型服务器地址系统版本PostgreSQL 版本核心要求主库Master192.168.42.140示例CentOS 7/8/9或Ubuntu 20.0414开启网络端口、关闭防火墙 / 放行5432端口从库Slave/Standby192.168.42.145示例与主库一致与主库完全一致与主库网络互通、磁盘空间不小于主库1.2 安装PostgreSQL还没安装PostgreSQL的小伙伴可以去cpolar官网参考《谁说没公网IP不能远程连数据库PostgreSQLcpolar打通任督二脉》这篇文章哦~2.1 修改PostgreSQL主配置文件主配置文件路径/var/lib/pgsql/14/data/postgresql.confvim/var/lib/pgsql/14/data/postgresql.conf修改以下核心参数取消注释并调整值# 1. 监听地址允许从库连接可指定从库IP或0.0.0.0允许所有listen_addresses*# 2. 开启归档模式主从复制依赖archive_modeon archive_commandcp %p /var/lib/pgsql/14/archive/%f# %p归档文件路径%f归档文件名# 提前创建归档目录mkdir-p/var/lib/pgsql/14/archivechown-Rpostgres:postgres /var/lib/pgsql/14/archive# 3. WAL日志配置保证复制可靠性wal_levelreplica# 复制所需的WAL级别replica/archive/logicalreplica足够wal_buffers16MB# 根据内存调整默认通常足够max_wal_senders10# 最大并发复制连接数大于从库数量即可wal_keep_size1GB# 保留WAL日志的大小防止从库同步滞后导致日志被清理# 4. 同步模式可选按需配置# synchronous_commit on # 默认同步提交保证主从数据一致性追求性能可设为off# synchronous_standby_names slave1 # 指定从库名称需与从库recovery.conf对应# 5. 其他优化可选max_connections1000# 大于从库的max_connections2.2 修改客户端认证配置文件文件路径/var/lib/pgsql/14/data/pg_hba.confvim/var/lib/pgsql/14/data/pg_hba.conf添加从库的连接授权允许从库 IP 通过复制用户连接hostreplication repl_user192.168.42.145/32 md5# 从库IPrepl_user为复制专用用户hostall all192.168.42.0/24 md5# 可选允许内网其他机器连接2.3 创建复制专用用户切换到postgres用户执行 SQL 命令创建用于主从复制的专用用户需授予复制权限su- postgres psql执行SQL-- 创建复制用户密码自定义示例Repl123456 CREATE ROLE repl_user WITH REPLICATION LOGIN ENCRYPTED PASSWORD********;-- 验证用户可选\du repl_user;-- 退出psql\q2.4 重启主库使配置生效systemctl restart postgresql-14 systemctl status postgresql-14sudo-upostgres psql-cSELECT pg_is_in_recovery();# 主库返回f非恢复模式2.5 备份主库数据供从库初始化使用pg_basebackup工具备份主库数据该工具专门用于PostgreSQL复制环境的从库初始化# 切换到postgres用户su- postgres# 执行备份备份到临时目录后续拷贝到从库pg_basebackup-h192.168.42.140-Urepl_user-p5432-D/tmp/pg_master_backup-Fp-Xs-P-R# 参数说明# -h主库地址# -U复制用户# -p主库端口# -D备份目录# -F p输出格式为普通文件与主库数据目录结构一致# -X s备份过程中同步复制WAL日志保证备份一致性# -P显示备份进度# -R自动生成复制所需的standby.signal文件和postgresql.auto.conf配置简化从库配置备份完成后将备份目录打包拷贝到从库的/var/lib/pgsql/14/目录下可通过 scp 传输tar-zcvfpg_master_backup.tar.gz /tmp/pg_master_backup# 主库上打包备份scppg_master_backup.tar.gz root192.168.1.101:/var/lib/pgsql/14# 传输到从库到从库所在地址查看一下是否传送成功到/var/lib/pgsql/143.从库配置3.1 停止从库PostgreSQL服务并清理原有数据目录# 停止从库服务systemctl stop postgresql-14# 清理原有数据目录初始化后的空目录需替换为主库备份mv/var/lib/pgsql/14/data /var/lib/pgsql/14/data_bak# 备份原有目录防止误删mkdir-p/var/lib/pgsql/14/data3.2 解压主库备份到从库数据目录# 切换到postgres用户su- postgres# 解压备份包tar-zxvf/var/lib/pgsql/14/pg_master_backup.tar.gz-C/var/lib/pgsql/14/# 移动备份数据到data目录mv/var/lib/pgsql/14/tmp/pg_master_backup/* /var/lib/pgsql/14/data/# 修改目录权限必须为postgres用户和组chown-Rpostgres:postgres /var/lib/pgsql/14/datachmod700/var/lib/pgsql/14/data3.3 验证 / 修改从库复制配置由于主库备份时使用了-R参数会自动生成standby.signal标识从库身份和postgresql.auto.conf包含复制连接信息无需手动创建# 查看自动生成的复制配置cat/var/lib/pgsql/14/data/postgresql.auto.confls/var/lib/pgsql/14/data/若没有则手动创建standby.signal并修改postgresql.conf# 手动创建standby.signal标识为从库touch/var/lib/pgsql/14/data/standby.signal# 编辑postgresql.conf添加复制配置,添加以下参数vim/var/lib/pgsql/14/data/postgresql.conf# 从库专属配置hot_standbyon# 允许从库处于恢复模式时提供查询服务只读max_connections500# 小于主库的max_connectionsprimary_conninfouserrepl_user passwordRepl123456 host192.168.42.140 port5432# 主库连接信息3.4 启动从库服务# 启动从库systemctl start postgresql-14 systemctlenablepostgresql-14# 验证从库状态systemctl status postgresql-144.验证主从复制是否生效4.1 主库验证复制状态su- postgres psql# 查看复制连接状态可看到从库的连接信息SELECT * FROM pg_stat_replication;# 输出说明# - usenamerepl_user复制用户# - client_addr192.168.1.101从库IP# - statestreaming表示正在流式复制# - sync_stateasync异步复制或 sync同步复制需主库配置synchronous_commiton从提供的pg_stat_replication查询结果来看PostgreSQL主从复制已经成功建立并且处于正常运行状态。这是一个非常关键的监控视图用于查看 主库上的复制连接状态。4.2 从库验证复制状态su- postgres psql# 1. 验证是否处于恢复模式从库返回t主库返回fSELECT pg_is_in_recovery();4.3 验证主从数据一致性# 主库创建测试表并插入数据# 主库执行CREATE DATABASE test_repl;\c test_repl;CREATE TABLE user_info(id int, name varchar(50));INSERT INTO user_info VALUES(1,test_replication);# 从库执行查看是否同步到数据\c test_repl;SELECT * FROM user_info;主库从库从上图我们可以看出主从复制成功啦5.主从复制常用操作5.1 切换主从故障转移简易版当主库故障时可将从库提升为主库# 从库执行停止恢复模式提升为主库su- postgres psql-cSELECT pg_promote();# 验证提升后从库pg_is_in_recovery()返回fpsql-cSELECT pg_is_in_recovery();5.2 监控复制延迟# 从库执行查看复制延迟单位秒SELECT now()- pg_last_xact_replay_timestamp()AS replication_delay;5.3新增从库只需重复 “从库配置” 步骤使用主库或现有从库需开启级联复制的pg_basebackup备份初始化即可。5.4 拓展主从复制已经成功搭建但我们的目标远不止于此。回想一下在开发、测试甚至小型项目交付中你是否也曾陷入这样的困境“我在家搭了个PostgreSQL数据库同事怎么连不上”“客户急着看Demo可服务跑在内网根本没法访问”“没有公网IP难道只能租云服务器或者干脆放弃远程演示”别焦虑——没有公网IP并不意味着你的服务只能困在局域网里。借助一个轻量级但强大的内网穿透工具cpolar你可以轻松将本地运行的PostgreSQL服务“暴露”到公网自动生成一个安全、可分享的HTTPS隧道地址。无论你身处家庭宽带、公司防火墙后还是校园网深处外部用户都能像访问普通网站一样通过标准端口安全连接你的数据库。本文将手把手带你完成这一过程从零配置cpolar到安全地将PostgreSQL服务映射至公网打通内网与外部世界的连接通道。从此“我的数据库在哪服务就在哪”不再是一句空话。准备好了吗让我们开启这场高效、安全、低成本的“内网突围”之旅6.安装cpolar实现随时随地开发6.1 什么是cpolarcpolar是一款安全高效的内网穿透工具无需公网IP或复杂配置只需一条命令即可将本地服务器、Web服务或任意端口映射到公网让你随时随地远程访问内网应用特别适合开发调试、远程运维和应急部署等场景。6.2 部署cpolarcpolar 可以将你本地电脑中的服务如 SSH、Web、数据库映射到公网。即使你在家里或外出时也可以通过公网地址连接回本地运行的开发环境。❤️以下是安装cpolar步骤使用一键脚本安装命令sudocurlhttps://get.cpolar.sh|sh安装完成后执行下方命令查看cpolar服务状态如图所示即为正常启动sudosystemctl status cpolarCpolar安装和成功启动服务后在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可打开浏览器访问本地9200端口使用cpolar账户密码登录即可,登录后即可对隧道进行管理。7.配置公网地址通过配置你可以在本地 WSL 或 Linux 系统上运行 SSH 服务并通过 Cpolar 将其映射到公网从而实现从任意设备远程连接开发环境的目的。隧道名称可自定义本例使用了:postgres注意不要与已有的隧道名称重复协议tcp本地地址192.168.42.140:5432端口类型随机临时TCP端口地区China Vip创建成功后打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址接下来就可以在其他电脑或者移动端设备异地上使用任意一个地址在终端中访问即可。tcp 表示使用的协议类型2.tcp.vip.cpolar.cn是 Cpolar 提供的域名11084是随机分配的公网端口号通过 Cpolar 提供的公网地址和端口使用 SSH 协议从任意一台主机连接到postgres账号啦psql-h2.tcp.vip.cpolar.cn-p11084-Upostgres-dmydb8.保留固定TCP公网地址使用cpolar为其配置TCP地址该地址为固定地址不会随机变化。选择区域和描述有一个下拉菜单当前选择的是“China VIP”。右侧输入框用于填写描述信息。保留按钮在右侧有一个橙色的“保留”按钮点击该按钮可以保留所选的TCP地址。列表中显示了一条已保留的TCP地址记录。地区显示为“China VIP”。地址显示为“8.tcp.vip.cpolar.cn:13299”。登录cpolar web UI管理界面点击左侧仪表盘的隧道管理——隧道列表找到所要配置的隧道postgres点击右侧的编辑。修改隧道信息将保留成功的TCP端口配置到隧道中。端口类型选择固定TCP端口预留的TCP地址填写保留成功的TCP地址点击更新。创建完成后打开在线隧道列表此时可以看到随机的公网地址已经发生变化地址名称也变成了保留和固定的TCP地址。最后测试一下固定的地址是否好用测试命令psql-h8.tcp.vip.cpolar.cn-p13299-Upostgres-dmydb这样我们成功打破了“没有公网 IP 就无法远程访问数据库”的固有认知。总结只有一台PostgreSQL服务器时所有数据和业务连接都集中在同一个节点。服务器宕机、磁盘故障或系统维护都可能让数据库暂时不可用如果备份不完整恢复过程还会进一步拉长。主从流复制提供了一种相对直接的容灾思路。主库继续承担正常写入同时把产生的WAL日志发送给从库从库持续接收并回放这些变化从而保留一份接近实时的数据副本。本文会以两台安装PostgreSQL 14的Linux服务器为例先在主库配置监听地址、WAL参数和复制账号再通过pg_hba.conf限制从库使用专用用户连接。随后使用pg_basebackup生成一致性基础备份将数据传输到从库并通过standby.signal和primary_conninfo建立持续复制关系。完成启动后再分别从主库和从库验证复制状态及数据同步结果。主从链路运行正常后还会介绍从库提升、复制延迟查询和新增从库等常用操作并使用 cpolar 为受控的远程连接建立TCP地址方便在没有公网IP的环境中进行测试和维护。

相关新闻

提升办公效率!Windows 搭建 OpenClaw 智能体,实现文件与网页自动化(含安装包)

提升办公效率!Windows 搭建 OpenClaw 智能体,实现文件与网页自动化(含安装包)

桌面 AI 智能体 OpenClaw 搭建教程|Windows 图形化部署,搭建自动化办公助手 ✨核心亮点:图形界面操作|省去复杂环境配置|整合全部运行依赖|支持本地运行|内置 28 万 Tokens 使用额度 资源获取…

2026/7/28 23:01:40 阅读更多 →
Flask-Blogging API全解析:开发者必须掌握的接口使用技巧

Flask-Blogging API全解析:开发者必须掌握的接口使用技巧

Flask-Blogging API全解析:开发者必须掌握的接口使用技巧 【免费下载链接】Flask-Blogging A Markdown Based Python Blog Engine as a Flask Extension. 项目地址: https://gitcode.com/gh_mirrors/fl/Flask-Blogging Flask-Blogging 是一个基于 Markdown 的…

2026/7/28 23:01:40 阅读更多 →
BitTorrent DHT核心功能揭秘:gh_mirrors/dht1/dht库关键API全指南

BitTorrent DHT核心功能揭秘:gh_mirrors/dht1/dht库关键API全指南

BitTorrent DHT核心功能揭秘:gh_mirrors/dht1/dht库关键API全指南 【免费下载链接】dht BitTorrent DHT library 项目地址: https://gitcode.com/gh_mirrors/dht1/dht BitTorrent DHT(分布式哈希表)是P2P网络中的核心组件,…

2026/7/28 23:00:39 阅读更多 →

最新新闻

AI赋能实体制造业:计算机视觉与区块链的智能质检实践

AI赋能实体制造业:计算机视觉与区块链的智能质检实践

1. 项目概述:当AI遇上实体经济的化学反应去年我在深圳一家传统制造企业调研时,发现他们的质检车间还保持着20年前的工作模式——30个工人每天盯着传送带上的零件,用肉眼检查划痕和瑕疵。而三个月后,当我们部署了基于计算机视觉的A…

2026/7/28 23:09:45 阅读更多 →
AI伦理不是口号:欧盟AI Act生效首月处罚案例全复盘(含3家中国出海企业被罚细节),合规自查表限时开放下载

AI伦理不是口号:欧盟AI Act生效首月处罚案例全复盘(含3家中国出海企业被罚细节),合规自查表限时开放下载

更多请点击: https://intelliparadigm.com 第一章:AI伦理不是口号:欧盟AI Act生效首月处罚案例全复盘(含3家中国出海企业被罚细节),合规自查表限时开放下载 欧盟《人工智能法案》(AI Act&#…

2026/7/28 23:09:44 阅读更多 →
Dendrite常见问题解答:解决联邦通信失败与性能优化难题

Dendrite常见问题解答:解决联邦通信失败与性能优化难题

Dendrite常见问题解答:解决联邦通信失败与性能优化难题 【免费下载链接】dendrite Dendrite is a second-generation Matrix homeserver written in Go! 项目地址: https://gitcode.com/gh_mirrors/dendri/dendrite Dendrite作为第二代Matrix homeserver&am…

2026/7/28 23:09:44 阅读更多 →
sequence-labeling-BiLSTM-CRF:终极TensorFlow实现指南,轻松掌握序列标注任务

sequence-labeling-BiLSTM-CRF:终极TensorFlow实现指南,轻松掌握序列标注任务

sequence-labeling-BiLSTM-CRF:终极TensorFlow实现指南,轻松掌握序列标注任务 【免费下载链接】sequence-labeling-BiLSTM-CRF The BiLSTM-CRF model implementation in Tensorflow, for sequence labeling tasks. 项目地址: https://gitcode.com/gh_m…

2026/7/28 23:09:44 阅读更多 →
本地部署AI智能体Hermes Agent:从零搭建可定制化AI助手

本地部署AI智能体Hermes Agent:从零搭建可定制化AI助手

这次我们来看一个能让你在本地电脑上跑起来的智能体项目——Hermes Agent。如果你对AI Agent、本地部署、自定义技能、长期记忆和语音交互这些概念感兴趣,但又觉得上手门槛太高,那这篇文章就是为你准备的。Hermes Agent 的核心目标,是打造一个能长期运行、能理解你意图、能调…

2026/7/28 23:09:44 阅读更多 →
2026年降AI前如何自测AIGC率完整指南:自测AIGC率4.8元操作要点详解

2026年降AI前如何自测AIGC率完整指南:自测AIGC率4.8元操作要点详解

2026年降AI前如何自测AIGC率完整指南:自测AIGC率4.8元操作要点详解 用过好几款降AI工具,嘎嘎降AI(www.aigcleaner.com)用得最多,测评也最完整。 4.8元,达标率99.26%。降AI前如何自测AIGC率完整内容往下看…

2026/7/28 23:08:44 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻