PostgreSQL流复制数据源配置_PostgreSQL流复制数据源建立

流复制通过主库发送WAL日志、备库接收并应用实现数据同步。需配置主库wal_level、max_wal_senders、pg_hba.conf允许复制连接,使用pg_basebackup创建基础备份,备库启用hot_standby并启动服务;验证通过pg_stat_replication和pg_is_in_recovery()检查状态,注意网络、权限、WAL保留策略及磁盘空间。

postgresql流复制数据源配置_postgresql流复制数据源建立

在PostgreSQL的世界里,流复制(Streaming Replication)无疑是构建高可用和数据冗余基石的关键技术。简单来说,它就是让你的数据有一个或多个实时备份,以防不测,或者分担读请求的压力。配置和建立流复制数据源,核心就在于主库(Primary)和备库(Standby)之间,通过传输和应用预写日志(WAL)来达到数据同步的目的。

说实话,第一次接触流复制,光是看着那些配置参数就有点头大。但一旦理解了背后的逻辑,其实也就那么回事。核心在于让主库知道它需要发送WAL日志,让备库知道它需要接收并应用这些日志。整个过程可以粗略分成几步,每一步都有其考量。

解决方案

配置和建立PostgreSQL流复制数据源,通常涉及主库的准备、基础备份的创建以及备库的配置启动。

1. 主库(Primary)配置

首先,我们需要调整主库的一些参数,使其能够支持流复制。这主要在

postgresql.conf

pg_hba.conf

文件中进行。

修改

postgresql.conf

wal_level = replica

:这是最基础的,它告诉PostgreSQL生成足够的WAL信息以支持流复制。在旧版本中可能是

hot_standby

logical

,但

replica

是当前推荐的。

max_wal_senders = 10

:这个参数定义了主库最多可以同时支持多少个备库连接来传输WAL。根据你的需求和备库数量设置一个合理的值,比如5-10个通常足够。

wal_keep_size = 5GB

:这决定了主库在

pg_wal

目录下保留多少WAL文件,以供备库在需要时拉取。如果备库因为网络或其他原因短暂掉线,这些保留的WAL文件可以帮助它追赶进度。这个值需要根据你的WAL生成速度和备库的掉线容忍度来估算,太大浪费空间,太小容易导致备库无法追赶。

listen_addresses = '*'

: 确保主库监听所有网络接口,这样备库才能连接上来。或者指定具体的IP地址。

hot_standby = on

: 虽然这个参数主要在备库上起作用,但为了完整性,有时在主库上也会提及,不过它对主库本身的功能影响不大。

# postgresql.conf (Primary)wal_level = replicamax_wal_senders = 10wal_keep_size = 5GB # 或者根据实际情况调整listen_addresses = '*'

修改

pg_hba.conf

添加一行允许备库连接到主库进行复制的规则。这通常是针对

replication

数据库用户。例如,如果你的备库IP是

192.168.1.100

,且你打算使用一个名为

repl_user

的用户进行复制:

# pg_hba.conf (Primary)host    replication     repl_user       192.168.1.100/32        md5

请确保

repl_user

在主库中已创建,并且拥有

replication

权限。

重启主库:所有配置更改后,需要重启PostgreSQL服务以使之生效。

2. 创建基础备份(Base Backup)

在主库配置完成后,我们需要从主库创建一个完整的数据备份,作为备库的起点。这个过程通常使用

pg_basebackup

工具来完成。

在备库机器上执行:选择一个空目录作为备库的数据目录,然后运行

pg_basebackup

命令。

# 假设备库数据目录是 /var/lib/postgresql/14/main_standby# -h: 主库地址# -p: 主库端口# -U: 复制用户# -D: 备库数据目录# -Fp: plain格式,非tar# -Xs: streaming模式,复制WAL日志# -R: 自动生成 recovery.conf (或 standby.signal 和 postgresql.auto.conf)pg_basebackup -h  -p 5432 -U repl_user -D /var/lib/postgresql/14/main_standby -Fp -Xs -R

执行此命令时,会提示输入

repl_user

的密码。成功后,备库数据目录下会包含主库的完整数据,以及一个

standby.signal

文件(PostgreSQL 12及更高版本)或

recovery.conf

文件(旧版本),用于指示备库启动时进入恢复模式。

3. 备库(Standby)配置与启动

修改

postgresql.conf

(备库):

hot_standby = on

:如果希望备库在复制的同时,也能接受只读查询,这个参数必须打开。

primary_conninfo = 'host= port=5432 user=repl_user password='

:这个连接字符串告诉备库如何连接到主库。

restore_command = 'cp /path/to/archive/%f %p'

:如果你同时启用了WAL归档,并且希望备库在流复制中断时能从归档中恢复,就需要配置这个。但对于纯流复制,通常不是必需的。

# postgresql.conf (Standby)hot_standby = on# primary_conninfo 通常由 pg_basebackup -R 自动生成在 postgresql.auto.conf 中,# 但你也可以手动添加或修改。# primary_conninfo = 'host= port=5432 user=repl_user password='

请注意,

pg_basebackup -R

选项会自动在备库数据目录下的

postgresql.auto.conf

文件中生成

primary_conninfo

,通常无需手动设置。

1.1.8PbootCMS 1.1.8PbootCMS

PbootCMS是一款高效、简洁、强悍的开源PHP企业网站开发建设管理系统。PbootCMS 1.1.8 更新日志:2018-08-071.修复提交表单多选字段接收数据问题;2.修复登录过程中二次登陆在页面不刷新时验证失败问题;3.新增搜索结果fuzzy参数来控制是否模糊匹配;4.新增父分类,顶级分类名称及链接独立标签,具体见手册;5.新增内容多图拖动排序功能。

1.1.8PbootCMS 243 查看详情 1.1.8PbootCMS

启动备库:启动备库的PostgreSQL服务。它会自动读取

standby.signal

recovery.conf

,并尝试连接主库进行WAL日志的同步和应用。

systemctl start postgresql-14 # 或你的PostgreSQL服务名

流复制的核心原理是什么?为什么我们需要它?

这事儿听起来简单,但背后的原理其实挺精妙的。WAL日志,你可以理解为数据库的所有变更记录,它保证了数据的一致性和持久性。PostgreSQL在任何数据写入磁盘之前,都会先将这些变更写入到WAL日志中。流复制,就是把这些日志实时地从主库“快递”到备库,备库再按顺序“播放”这些变更,将其应用到自己的数据文件中。这个过程是物理级别的复制,效率很高。

至于为什么我们需要它,除了显而易见的数据安全,还有几个关键点:

高可用性(High Availability):这是最主要的驱动力。如果主库突然挂了,备库可以迅速地被提升为新的主库,大大减少了业务中断的时间。这就像给你的核心业务数据买了一份实时保险。读扩展(Read Scaling):当你的应用读请求远超写请求时,可以将部分只读查询分流到备库上执行,从而减轻主库的压力,提高整体系统的吞吐量。不过,这需要应用程序层面的支持,能区分读写请求。灾难恢复(Disaster Recovery):如果整个数据中心发生灾难,只要你的备库位于不同的地理位置,就能提供快速的恢复能力。数据分析/报告:有时,我们会在备库上运行一些耗时的数据分析或报告生成任务,避免这些任务影响主库的性能。

对我来说,流复制不仅仅是一个技术配置,它更是一种风险管理策略。尤其是在生产环境中,没有流复制的数据库,就像走钢丝没有安全网,心里总是不踏实。

配置流复制时,有哪些常见的“坑”和注意事项?

我个人觉得,流复制最容易出问题的地方往往不是配置本身,而是对细节的忽略和环境的差异。比如网络延迟,有时能把人折腾疯。还有WAL日志的管理,这绝对是个重灾区。

网络连接与防火墙:这是最基础也最容易被忽视的问题。主备库之间必须能够互相访问,特别是主库的5432端口。防火墙规则(如

ufw

firewalld

)一定要正确配置,允许复制用户从备库IP连接。我遇到过几次,就是因为防火墙没开通,排查了半天才发现。

wal_keep_size

的设置:这个参数非常关键。如果备库因为网络波动、机器重启等原因暂时掉线,它会尝试从主库拉取缺失的WAL文件。如果主库因为

wal_keep_size

设置太小,已经清除了备库需要的WAL文件,那么备库就无法追赶,只能重新做一次基础备份。这是一个很常见的“坑”。所以,

wal_keep_size

要结合你的WAL生成速度和备库的掉线容忍度来设置,或者配合WAL归档(

archive_mode

)使用,让备库可以从归档中获取历史WAL。

pg_hba.conf

权限问题:复制用户必须有正确的权限,并且在

pg_hba.conf

中有对应的

replication

规则。如果这里配置错了,备库根本连不上主库。用户权限与密码:复制用户(如

repl_user

)必须在主库上创建,并拥有

replication

权限。密码也要确保正确,并且在

primary_conninfo

中配置无误。磁盘空间:备库需要和主库一样甚至更多的磁盘空间来存储数据和WAL日志。如果备库磁盘满了,复制就会停止。PostgreSQL版本一致性:强烈建议主备库使用完全相同的PostgreSQL版本,包括小版本号。虽然有时大版本之间在一定条件下也能复制,但为了避免不必要的兼容性问题,最好保持一致。时区与系统时间:主备库的系统时间最好同步,并使用相同的时区设置,这有助于日志分析和事件关联。故障切换(Failover):很多人只关注了如何搭建流复制,却忽略了当主库真正挂掉时,如何安全、有效地将备库提升为主库。这需要一套成熟的故障切换策略和工具(如

pg_auto_failover

,

Patroni

等),以及应用程序如何感知新的主库地址。单纯的手动提升备库为主库,操作不当可能会导致数据丢失或脑裂。

如何验证流复制是否正常工作,以及故障排查的初步思路?

配置完流复制,别以为就万事大吉了。最关键的是要确认它真的在工作,而且是健康地工作。我见过太多次,配置好了,但一检查发现备库早就掉队了,或者干脆就没连上。所以,定期的检查和一套初步的排查思路是必不可少的。

验证流复制状态:

在主库上检查

pg_stat_replication

视图:这是最直接的检查方式。连接到主库,执行:

SELECT client_addr, state, sync_state, sync_priority, replay_lag, write_lag, flush_lag FROM pg_stat_replication;
client_addr

:应该显示备库的IP地址。

state

:应该是

streaming

,表示正在实时传输WAL。

sync_state

:如果是同步复制,会显示

sync

;如果是异步复制,则显示

async

replay_lag

:这个非常重要,表示备库落后主库多少时间。理想情况下应该非常小,接近0。如果持续增大,说明备库跟不上了。

在备库上检查

pg_is_in_recovery()

连接到备库,执行:

SELECT pg_is_in_recovery();

如果返回

t

(true),说明备库正在恢复模式,即正在进行流复制。如果返回

f

,说明它已经脱离恢复模式,可能已经提升为主库,或者复制失败。

检查数据库日志文件:主备库的PostgreSQL日志文件(通常在数据目录的

log

文件夹下)会记录复制相关的事件和错误信息。查看这些日志是排查问题的第一步。例如,主库日志会记录备库的连接信息,备库日志会记录它尝试连接主库和应用WAL的情况。

写入测试数据并验证:如果备库设置为

hot_standby = on

,你可以在主库上插入一条数据,然后在备库上立即查询,看是否能查到。这是最直观的验证方法。

故障排查的初步思路:

当发现流复制不正常时,可以按照以下步骤进行排查:

网络连通性检查:首先确认主备库之间网络是否畅通。从备库

ping

主库IP,或者用

telnet  5432

检查端口是否开放。防火墙问题往往在这里暴露。

主库

pg_hba.conf

和用户权限:检查主库的

pg_hba.conf

是否允许备库IP的

replication

用户连接。同时确认

repl_user

是否存在且密码正确。

主库

postgresql.conf

参数:确认

wal_level = replica

max_wal_senders

是否配置正确,并且主库已重启生效。

备库日志文件:仔细查看备库的PostgreSQL日志。它通常会告诉你为什么连接不上主库,或者为什么无法应用WAL。常见的错误信息包括“could not connect to server”、“FATAL: password authentication failed”、“WAL segment xxx not found”等。

wal_keep_size

或 WAL归档问题:如果备库日志显示“WAL segment xxx not found”,这通常意味着备库落后太多,主库已经清理了它需要的WAL文件。这时候你可能需要:

增大主库的

wal_keep_size

。如果启用了WAL归档,检查归档是否正常工作,以及备库的

restore_command

是否正确。最坏的情况,可能需要重新做一次基础备份。

备库磁盘空间:检查备库的数据目录所在分区是否有足够的空间。磁盘满会导致WAL无法写入,复制中断。

primary_conninfo

检查:确认备库的

postgresql.auto.conf

postgresql.conf

中的

primary_conninfo

连接字符串是否正确,包括主库IP、端口、用户和密码。

排查问题就像侦探破案,需要耐心和细致。从最基础的网络和权限开始,逐步深入到配置参数和日志分析,通常都能找到症结所在。

以上就是PostgreSQL流复制数据源配置_PostgreSQL流复制数据源建立的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1059291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 10:26:02
下一篇 2025年12月2日 10:26:24

相关推荐

  • 以太坊的企业热潮:ETH 觊觎王座?

    以太坊能否挑战比特币霸主地位?企业拥抱、通证化趋势与市场情绪升温预示eth或将迎来爆发 关于以太坊(ETH)的讨论热度持续攀升。随着企业层面的广泛接纳和多项市场指标走强,ETH是否有望取代比特币成为加密市场主导力量?我们一起来剖析推动这一趋势的关键因素。 企业拥抱以太坊:颠覆行业格局的关键 Erns…

    2025年12月8日
    000
  • 币圈牛市未来:驾驭加密货币领域

    加密货币牛市前景分析:把握数字资产新机遇 加密市场正迎来新一轮关注!围绕“加密货币、牛市、未来”的讨论热度持续上升,市场展现出潜在上升趋势,同时监管格局也在逐步调整。让我们共同探索影响加密货币发展进程的关键因素。 历史的启示:是否会再现往日辉煌? 最新市场数据显示,当前市场状况与2017年比特币暴涨…

    2025年12月8日
    000
  • 韩国稳定币激增:Web3创新热潮升温

    韩国web3生态崛起:稳定币革新带动黑客马拉松、ai融合与政策扶持,这是数字金融的未来方向吗? 韩国稳定币热潮:Web3创新持续升温 稳定币、Web3与韩国的结合正展现出前所未有的活力!从创新的黑客马拉松到人工智能驱动的应用,韩国的数字资产领域正快速推进。让我们深入探讨这些关键动态及其对金融未来的影…

    2025年12月8日
    000
  • BlockDAG预售飙升至3.43亿美元:加密货币领域的变革者?

    blockdag预售成功突破3.43亿美元,预示着加密市场正朝着实用性与创新性的方向迈进。它会是下一个大事件吗? BlockDAG预售:突破3.43亿美元的里程碑 加密社区对BlockDAG的关注正在持续升温,其预售金额已经突破3.43亿美元,显示出市场对该项目的高度期待。究竟是什么推动了这股热潮?…

    2025年12月8日
    000
  • 以太坊ETH24小时价格走势app 实时k线行情图表免费软件

    您是否在寻找一款能够实时追踪以太坊(ETH)价格波动、提供专业K线图表分析的得力助手?一款优秀的行情软件不仅能帮助您洞察市场先机,更能让您的投资决策有据可依。这款应用专为数字货币爱好者设计,集行情查看与交易功能于一体,是您驰骋加密世界的理想伙伴。 本文将为您提供该app的官方正版下载渠道,确保您获取…

    2025年12月8日
    000
  • 以太坊实时行情k线app 最新ETH价格走势今日分析app

    在数字货币市场中,以太坊(ETH)作为核心资产之一,其价格的每一次波动都牵动着无数投资者的心。想要精准把握市场脉搏,抓住每一个投资良机,一款专业、实时的行情分析工具不可或缺。这款应用不仅为您提供最前沿的ETH价格走势和K线分析,更集成了多种主流数字货币的交易功能,助您在加密世界中运筹帷幄,轻松实现投…

    2025年12月8日
    000
  • OpenFundNet、实用型代币、众筹成功:一个新时代?

    探索 openfundnet 的实用型代币 ofnt 如何以其创新方法、透明机制和社区驱动的生态系统重塑众筹模式。 OpenFundNet、实用代币、众筹成功:一个新时代的来临? OpenFundNet(OFNT)的崛起正在改变众筹领域的格局。它以实用性和社区参与为核心,为创新融资提供了全新的视角。…

    2025年12月8日
    000
  • 比特币、FloppyPepe 与投资回报潜力:抓住下一波加密货币浪潮

    比特币强势回归,点燃模因币热潮!floppypepe 会是下一个狗狗币,带来巨额回报吗?探索趋势与洞察。 比特币、FloppyPepe 与投资回报潜力:抓住下一波加密浪潮 比特币价格的强劲上涨正在推动诸如 FloppyPepe(FPPE)这类模因币的关注度上升。FPPE 是否能够带来下一轮丰厚的回报…

    2025年12月8日
    000
  • Bittensor、去中心化人工智能与数字资产:一个新时代

    探索 bittensor 与去中心化 ai 的崛起,深入了解数字资产策略与市场趋势。了解 tao 如何塑造未来。 Bittensor、去中心化 AI 与数字资产:迈向新纪元 在人工智能与区块链技术迅猛发展的浪潮中,Bittensor 正崭露头角,成为连接去中心化 AI 与前沿数字资产模式的重要平台。…

    2025年12月8日
    000
  • 比特币实时行情价格查询app 比特币今日k线走势分析

    您是否在寻找一款集实时行情、专业K线分析与便捷交易于一体的强大工具?这款应用不仅能让您轻松查询比特币等上千种数字货币的实时价格,还能深入分析历史走势,助您做出更明智的投资决策。 为了确保您使用的是正版应用,保障您的资产安全,本文为您提供了官方app的直接下载渠道。点击下方的下载链接,即可获取最新版本…

    2025年12月8日
    000
  • PEPE币最新k线走势图app PEPE24小时价格动态实时分析

    想要精准把握PEPE币的每一次价格脉动,抓住每一个潜在的投资良机吗?在这个瞬息万变的数字货币世界里,一款专业且高效的K线走势图APP是您不可或缺的制胜利器。它不仅能帮助您实时洞察PEPE币的24小时价格动态,更能提供深度分析工具,助您在复杂的市场环境中做出更明智的投资决策,抢占先机。 本文为您准备了…

    2025年12月8日
    000
  • 买虚拟货币被套住怎么办?新手止损策略盘点

    刚进入币圈的新手,常常在一轮行情下跌中“被套牢”,眼看账户缩水,却不知道该不该止损。其实,如何处理被套,是投资中极关键的技能。 第一步:冷静评估是否真的被套 很多人买入币价刚回调就慌张,其实并不算“套牢”。判断标准应是:币价跌幅超20%且短期无反弹迹象。这时可判断为阶段性被套。 第二步:止损or补仓…

    2025年12月8日
    000
  • 买卖虚拟币能实现财务自由吗?现实与幻想对比

    很多人入圈的初衷,是想通过虚拟币实现“财务自由”,但币圈到底是不是通往财富的捷径?这其中既有真实案例,也有不少幻想泡沫。 现实一:暴富可能存在,但极其稀有 确实有早期投资者靠比特币、以太坊等主流币实现了千万资产,但这类成功案例多发生在2013-2020年之间,随着市场逐渐成熟,暴涨暴富的概率在下降。…

    2025年12月8日
    000
  • 狗狗币价格暴涨:模因币狂热还是加密货币革命?

    狗狗币价格飙升引发市场热议:是炒作还是潜力? 狗狗币的热潮再度席卷而来!这枚以模因为灵感的加密货币价格大幅上涨,引发人们广泛讨论:这是否只是短暂的市场泡沫,还是预示着狗狗币以及整个加密资产领域的进一步发展? 狗狗币价格飞涨:时代情绪的风向标? 近期,狗狗币(Dogecoin)重回聚光灯下。受比特币因…

    2025年12月8日
    000
  • Solana、XYZVerse 和 Pi Network:探索加密货币领域

    探索 solana、xyzverse 与 pi network 的最新趋势与洞见,从高速区块链到社区驱动的加密解决方案,以及 1 亿美元的生态系统基金。 Solana、XYZVerse 与 Pi Network:穿越加密世界的格局 加密世界正变得越来越热闹!从 Solana 的技术创新,到 XYZV…

    2025年12月8日
    000
  • 币圈“庄家割韭菜”是怎么回事?新手该如何避免被割韭菜

    在币圈,“庄家割韭菜”是一种广泛流传的说法,意思是大资金操盘者(庄家)通过制造行情波动,引诱散户进场,从而高位出货、套现离场,导致散户亏损被“收割”。 对新手来说,选择正规平台交易是第一步。例如,币安是全球最大的数字资产交易平台之一,提供币种行情、K线图、资金流向等工具,有助于识别“被庄控盘”的风险…

    2025年12月8日
    000
  • 常见的稳定币有哪些?和普通币种有什么不同?

    稳定币是与法定货币挂钩、价格波动较小的一类虚拟货币,主要用于价值锚定和资产保值。 目前市面上最常见的稳定币包括: USDT(Tether):市值最大、使用最广的稳定币,锚定美元,几乎所有交易平台都支持。 USDC(USD Coin):由Circle发行,合规性较强,透明度高。 BUSD(Binanc…

    2025年12月8日
    000
  • 币圈黑话大全:新手必懂的20个术语

    刚入圈的新手往往会被各种术语“绕晕”,看不懂群聊、读不懂资讯。本文为你盘点币圈最常见的20个黑话术语,学会这些,快速融入币圈生态。 1. 拉盘:指庄家或资金推动币价上涨。 2. 砸盘:庄家或大量持币者集中抛售,导致币价快速下跌。 3. 韭菜:指新手投资者,常被高位接盘或被“割”。 4. 割韭菜:指庄…

    2025年12月8日
    000
  • 比特币、Nexchain 和预售:加密货币领域什么最热门?

    探索比特币的动态、nexchain 的崛起以及围绕加密货币预售的热议,揭示投资者关注的关键趋势和见解。 比特币、Nexchain 与预售:加密领域当前的热点 加密世界总是在不断变化,比特币依然占据主导地位,而 Nexchain 的预售正在引发广泛关注。这不仅仅是市场炒作,更涉及人工智能与实际应用场景…

    2025年12月8日
    000
  • 《GENIUS法案、Circle与Tether:稳定币的新时代?》

    《genius法案》引发稳定币行业巨头circle与tether之间的合规竞赛,同时也为传统金融进入数字资产领域打开了新的通道。 GENIUS法案、Circle与Tether:稳定币新时代的来临? 《GENIUS法案》的出台在稳定币市场引发了广泛关注。行业领导者如Circle和Tether正在制定新…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信