查看“PostgreSQL高可用”的源代码
←
PostgreSQL高可用
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
介绍一种基于 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 的写请求被发送给主库,而读请求可以随机发送给主库或备库。 === 复制类型 === 数据库高可用架构都会用到日志。如 mysql 的 binlog,oracle 的 redo,postgresql 的 wal。原理性质整体上相近:首先记录数据库变化并通过特定算法转换成可用的文本或记录方式的文件。其次这些日志文件都是循环或覆盖进行写入的。最后都会记录数据库的所有变化,就需要进行归档,因为他们是循环或覆盖写入的,通俗的讲就是日志文件持久化。 在PG中,流复制就是通过 WAL 日志传递的方法来保证主备数据库的同步、一致。 PostgreSQL 支持物理复制(流复制)及逻辑复制2种。 * [https://www.postgresql.org/docs/current/high-availability.html 流复制] 流复制同步方式有同步、异步两种,基于实例级的复制,只能复制整个 PostgreSQL 实例,而不能基于部分库及表。 * [https://www.postgresql.org/docs/current/logical-replication.html 逻辑复制] 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 * 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,为保障从库能在应用归档落后时依旧能追上主库,可以设置较大一些。13.0 以后版本将 wal_keep_segments 重命名为 wal_keep_size。让用户指定 WAL 大小而不是 WAL 文件个数。 * hot_standby 控制在恢复归档期间是否支持只读操作,设置为 ON 后从库为只读模式 ==== 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 md5 host replication postgres 192.168.0.0/0 md5 === 备库初始化同步主库数据 === pg_basebackup -h 192.168.0.21 -U postgres -D /u01/pgdb/db/bidb -X stream -R -P -R 为流复制写入相关配置,如:生成 standby.signal 空文件,在 postgresql.auto.conf 写入连接主库配置 primary_conninfo。 从 12 版本开始,去掉 recovery.conf,参数并入 postgresql.conf。不再使用 standby_mode。(在 12 以前,recovery.conf 文件的存在即触发恢复模式。) === 从库配置 === * standby.signal # 优先 * recover.signal # 归档恢复,延迟为一个归档文件 将 postgresql.auto.conf 内容写入 postgresql.conf。 [[分类:Develop]] [[分类:DB]] [[分类:PostgreSQL]]
返回
PostgreSQL高可用
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息