PostgreSQL高可用:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
第34行: 第34行:
  archive_mode = on
  archive_mode = on
  archive_command = 'cp "%p" /u01/pgdb/db/archive/%f'
  archive_command = 'cp "%p" /u01/pgdb/db/archive/%f'
  max_wal_senders= 10
  max_wal_senders = 10
  wal_keep_segments=1024
  # wal_keep_segments = 1024
  hot_standby = on
  hot_standby = on
postgresql 13.0 以后版本将 wal_keep_segments 重命名为 wal_keep_size。让用户指定 WAL 大小而不是 WAL 文件个数。
* listen_addresses
* listen_addresses
可以按需配置网段或 IP(有些文档写成 listen_address,导致启动报错)
可以按需配置网段或 IP(有些文档写成 listen_address,导致启动报错)


* wal_level
* wal_level
设置流复制模式至少设置为replica
设置流复制模式至少设置为replica


* archive_mode
* archive_mode
是否启用归档
是否启用归档


* archive_command
* archive_command
WAL 日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上
WAL 日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上


* max_wal_senders
* max_wal_senders
最大WAL发送进程数,此数量需大于等于从库个数且比 max_connections 小
最大WAL发送进程数,此数量需大于等于从库个数且比 max_connections 小


* wal_keep_segments
* wal_keep_segments
pg_wal 目录下保留 WAL 日志的个数。每个 WAL 文件默认 16M,为保障从库能在应用归档落后时依旧能追上主库,可以设置较大一些
pg_wal 目录下保留 WAL 日志的个数。每个 WAL 文件默认 16M,为保障从库能在应用归档落后时依旧能追上主库,可以设置较大一些



2023年9月2日 (六) 19:27的版本

介绍一种基于 pgpool-II 的方案,实现在双机条件下,pgpool-II 服务的高可用,PostgreSQL 的高可用和负载均衡等功能。

方案架构

在两台服务器上,分别部署 PostgreSQL 和 pgpool-II 。

PostgreSQL 通过流复制(streaming replication)实现数据同步。

pgpool-II 监控数据库集群的状态,并将用户请求分发到数据库节点上。 pgpool-II 主节点启动虚拟 IP,作为对外访服务的地址。

pgpool-II 服务高可用

当 pgpool-II 主节点停止后,standby 节点升级为主节点。

PostgreSQL 高可用和在线恢复

主数据库停止或所在服务器宕机,则进行主备切换,原主库服务器启动后自动切换为新主库的备库。

负载均衡

客户端通过 pgpool-II 访问 PostgreSQL 的写请求被发送给主库,而读请求可以随机发送给主库或备库。

实施

PostgreSQL 支持物理复制(流复制)及逻辑复制2种。

流复制同步方式有同步、异步两种,基于实例级的复制,只能复制整个 PostgreSQL 实例,而不能基于部分库及表。

PostgreSQL10 开始,实现了基于表级别的复制

/etc/postgresql/15/main/

postgresql.conf

listen_addresses = '*'
wal_level = replica
archive_mode = on
archive_command = 'cp "%p" /u01/pgdb/db/archive/%f'
max_wal_senders = 10
# wal_keep_segments = 1024
hot_standby = on

postgresql 13.0 以后版本将 wal_keep_segments 重命名为 wal_keep_size。让用户指定 WAL 大小而不是 WAL 文件个数。

  • listen_addresses

可以按需配置网段或 IP(有些文档写成 listen_address,导致启动报错)

  • wal_level

设置流复制模式至少设置为replica

  • archive_mode

是否启用归档

  • archive_command

WAL 日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上

  • max_wal_senders

最大WAL发送进程数,此数量需大于等于从库个数且比 max_connections 小

  • wal_keep_segments

pg_wal 目录下保留 WAL 日志的个数。每个 WAL 文件默认 16M,为保障从库能在应用归档落后时依旧能追上主库,可以设置较大一些

  • hot_standby

pg_hba.conf

host all all 127.0.0.1/32 trust
host all all ::1/128 trust

host all all 0.0.0.0 0.0.0.0 md5
# OR
# replication privilege. local replication all trust
host replication repl 192.168.0.0/24 md5
host replication repl 192.168.0.0/24 md5


控制在恢复归档期间是否支持只读操作,设置为 ON 后从库为只读模式