HoRain云--PostgreSQL 流复制认证机制

  

🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

一、流复制认证的两种模式

1. 基于 replication 用户的密码认证

2. 基于客户端证书的SSL认证(更安全)

二、关键配置文件解析

1. pg_hba.conf 规则字段说明

2. 备库 recovery.conf(PG12+改为 postgresql.auto.conf)

三、常见问题排查

1. 认证失败错误码

2. 日志检查

四、安全增强建议

五、版本差异注意事项


img


一、流复制认证的两种模式

1. 基于 replication 用户的密码认证
  • 认证流程
    • 备库通过 pg_hba.conf 中定义的规则连接到主库的复制槽(Replication Slot)
    • 使用专用用户(如 repl_user)和密码进行身份验证
  • 配置步骤
    1. 主库创建复制用户
      CREATE ROLE repl_user WITH REPLICATION LOGIN PASSWORD 'secure_password';
      
    2. 主库配置 pg_hba.conf
      # 允许特定IP的备库通过SSL使用密码认证
      hostssl replication repl_user 192.168.1.0/24 scram-sha-256
      
    3. 主库配置 postgresql.conf
      wal_level = replica
      max_wal_senders = 10  # 允许的最大WAL发送进程数
      
2. 基于客户端证书的SSL认证(更安全)
  • 认证流程
    • 备库通过SSL证书验证身份(无需传输密码)
    • 依赖OpenSSL生成的CA证书链
  • 配置步骤
    1. 生成证书(主备库均需):
      # 生成CA证书
      openssl req -new -x509 -days 3650 -nodes -text -out ca.crt -keyout ca.key
      
      # 生成备库证书(CN需匹配备库主机名)
      openssl req -new -nodes -text -out standby.csr -keyout standby.key -subj "/CN=standby1"
      openssl x509 -req -in standby.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out standby.crt
      
    2. 主库配置 pg_hba.conf
      hostssl replication repl_user 192.168.1.0/24 cert clientcert=verify-ca
      
    3. 备库配置 postgresql.conf
      ssl = on
      ssl_cert_file = '/var/lib/pgsql/15/data/standby.crt'
      ssl_key_file = '/var/lib/pgsql/15/data/standby.key'
      ssl_ca_file = '/var/lib/pgsql/15/data/ca.crt'
      

二、关键配置文件解析

1. pg_hba.conf 规则字段说明
字段示例值含义
连接类型hostssl仅允许SSL加密连接
数据库名replication标识流复制专用通道
用户名repl_user复制角色用户名
IP地址范围192.168.1.0/24允许的备库IP段
认证方法scram-sha-256PostgreSQL推荐的密码哈希方式
2. 备库 recovery.conf(PG12+改为 postgresql.auto.conf
primary_conninfo = 'host=primary_host port=5432 user=repl_user password=secure_password sslmode=verify-full sslrootcert=/path/to/ca.crt'

三、常见问题排查

1. 认证失败错误码
  • FATAL: no pg_hba.conf entry for replication connection
    原因:主库 pg_hba.conf 未配置 replication 条目
  • password authentication failed for user "repl_user"
    原因:密码错误或用户权限不足
2. 日志检查
  • 主库日志路径$PGDATA/log/postgresql.log
  • 关键过滤命令:
    grep -E 'repl_user|SSL|replication' $PGDATA/log/postgresql.log
    

四、安全增强建议

  1. IP白名单限制:在 pg_hba.conf 中严格限制备库IP地址
  2. 证书轮换策略:每90天更新一次客户端证书
  3. 防火墙规则:仅开放主库5432端口给备库
  4. 监控工具:使用 pg_stat_replication 视图实时监控复制状态
    SELECT client_addr, state, sent_lsn, write_lsn 
    FROM pg_stat_replication;
    

五、版本差异注意事项

  • PostgreSQL 13+:默认启用 scram-sha-256,不再支持 md5
  • PostgreSQL 15+:新增 pg_identify_system 函数验证复制连接

通过以上机制,PostgreSQL 流复制可在生产环境中实现 低延迟(亚秒级)企业级安全性 的平衡。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值