PGSQL Offline 离线从库部署
离线从库 —— 一种不承载线上业务流量,用于ETL,只读分析查询的专用实例。
离线从库
当您的在线业务请求负载水位很大时,将数据分析/ETL/个人交互式查询,备份与数据导出等任务, 放在专用的离线只读从库上是一个更为合适的选择。
离线从库默认不承载 replica
服务,只有当所有 replica
服务中的实例均不可用时,离线实例才会用于紧急承载只读流量。
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
10.10.10.12: { pg_seq: 2, pg_role: replica }
10.10.10.13: { pg_seq: 2, pg_role: offline } # 定义一个新的Offline实例
vars:
pg_cluster: pg-test
使用 bin/createpg pg-test
,即可创建出该集群来。
那么可以使用 bin/createpg 10.10.10.13
,进行集群扩容,向集群中添加一台离线从库实例。
bin/createpg 10.10.10.13 # 向集群 pg-test 中扩容一台离线实例 10.10.10.13
bin/reloadha pg-test # 重新调整 pg-test 集群的负载均衡流量
离线从库的访问受到特殊限制,这是通过额外的HBA规则实现的。例如,用户应当使用Offline服务访问离线从库。
psql postgres://test:test@pg-test:5433/test
准离线从库
单独使用一台离线从库对于很多非核心场景过于奢侈,您可以将一台普通从库标记为准离线从库。
如果您只有一主一从,或者干脆只有一个主库,没有专用的离线实例,可以为该实例设置 pg_offline_query
标记。
带有该标记的实例仍然扮演原来的角色,但同时也承载 offline
服务的流量,可用作 准离线实例。
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
10.10.10.12: { pg_seq: 2, pg_role: replica }
10.10.10.13: { pg_seq: 2, pg_role: replica, pg_offline_query: true } # 定义一个准离线实例
vars:
pg_cluster: pg-test
无论是您将一台 replica
重新标记为 offline
,或者是为从库打上 pg_offline_query
的标记,您都需要使用以下命令调整集群 HBA:
bin/reloadha pg-test # 调整集群流量分发规则
bin/reloadhba pg-test # 调整集群黑白名单规则
然后即可生效。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 2022-06-05: add pgsql/deploy document (34a3325)