身份标识
实体命名规范与身份标识符设计。
Pigsty 使用统一的身份标识系统来识别和管理实体,确保命名一致性和可追溯性。
核心身份参数
三项必填参数构成 PGSQL 的最小身份集:
| 参数 | 层级 | 说明 | 约束 |
|---|---|---|---|
pg_cluster |
集群 | 集群名称 | [a-z][a-z0-9-]* |
pg_seq |
实例 | 实例序号 | 唯一正整数,不可复用 |
pg_role |
实例 | 实例角色 | primary/replica/offline/delayed |
这三个参数必须在配置清单中显式指定,Pigsty 不会提供默认值。
衍生标识
基于核心参数,Pigsty 自动生成其他实体标识:
实例名
实例名 = ${pg_cluster}-${pg_seq}
示例:
pg-test-1pg-test-2pg-meta-1
服务名
服务名 = ${pg_cluster}-${角色后缀}
默认服务:
pg-test-primary(读写)pg-test-replica(只读)pg-test-default(直连)pg-test-offline(离线)
节点名
默认情况下,节点名等同于实例名:
节点名 = ${pg_cluster}-${pg_seq}
可通过 node_id_from_pg 参数控制。
命名规范
集群命名
集群名应为有效的 DNS 域名组件:
正确:pg-test, pg-meta, pg-order-db
错误:pg.test, pg_test, PG-TEST
规则:
- 只能包含小写字母、数字和连字符
- 必须以字母开头
- 不能包含点号、下划线或大写字母
- 正则:
[a-z][a-z0-9-]*
建议:
- 使用
模块-用途格式:pg-order、pg-user - 使用
模块-环境-用途格式:pg-prod-order
实例序号
序号是集群内实例的唯一标识:
规则:正整数,从 1 开始,唯一且不可复用
设计理念:
- 表达拓扑顺序和故障转移优先级
- 一旦分配,即使实例销毁也不应复用
- 用于监控标签和日志关联
实例角色
角色决定实例在复制拓扑中的位置:
| 角色 | 说明 | 数量 |
|---|---|---|
primary |
主库,可读写 | 有且仅有 1 个 |
replica |
从库,承载在线只读 | 0 到多个 |
offline |
离线库,不承载在线流量 | 0 到多个 |
delayed |
延迟库,延迟复制 | 0 到多个 |
配置示例
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: 3, pg_role: replica, pg_offline_query: true }
vars:
pg_cluster: pg-test
生成的标识
| 集群 | 序号 | 角色 | 节点 IP | 实例名 | 主机名 |
|---|---|---|---|---|---|
| pg-test | 1 | primary | 10.10.10.11 | pg-test-1 | pg-test-1 |
| pg-test | 2 | replica | 10.10.10.12 | pg-test-2 | pg-test-2 |
| pg-test | 3 | replica | 10.10.10.13 | pg-test-3 | pg-test-3 |
服务入口
| 服务名 | 端口 | 目标实例 |
|---|---|---|
| pg-test-primary | 5433 | pg-test-1 |
| pg-test-replica | 5434 | pg-test-2, pg-test-3 |
| pg-test-default | 5436 | pg-test-1 |
| pg-test-offline | 5438 | pg-test-3 |
监控标签
监控系统使用身份参数作为指标标签:
# 实例级指标
pg_up{cls="pg-test", ins="pg-test-1", ip="10.10.10.11", job="pgsql"}
# 集群级聚合
sum(pg_stat_activity_count{cls="pg-test"})
# 特定实例
pg_replication_lag_seconds{ins="pg-test-2"}
标签定义
| 标签 | 来源 | 说明 |
|---|---|---|
cls |
pg_cluster |
集群名 |
ins |
pg_cluster-pg_seq |
实例名 |
ip |
节点 IP | 节点地址 |
job |
固定值 | pgsql 或 pgrds |
日志标签
VictoriaLogs 使用以下标签:
| 日志类型 | Job 名 |
|---|---|
| PostgreSQL CSV 日志 | postgres |
| pgBackRest 日志 | pgbackrest |
| 其他组件(通过 syslog) | 各组件名 |
最佳实践
命名建议
-
语义化:名称应反映业务含义
pg-order # 订单服务数据库 pg-user # 用户服务数据库 pg-meta # 元数据库 -
环境前缀:区分不同环境
pg-prod-order # 生产环境 pg-stag-order # 预发环境 pg-dev-order # 开发环境 -
保持一致:整个组织使用统一的命名规范
序号分配
- 不要复用:实例销毁后,序号应保留
- 预留空间:为扩容预留序号范围
- 记录映射:维护序号与用途的映射文档