PGSQL Primary 主库部署
本文介绍PostgreSQL单例主库的部署方式,以及如何在主库是那个部署
单机部署
让我们以沙箱环境为例,假设您已经在沙箱元节点(10.10.10.10
)使用 infra.yml
完成完整安装。
现在从最简单的案例开始,我们希望在 node-1 (10.10.10.11)
上部署一个单机数据库集群 pg-test
首先,编辑配置清单,添加pg-test
集群的配置:
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-test
使用以下命令,在 10.10.10.11
节点上创建一个单主的数据库实例。
bin/createpg pg-test # 创建 pg-test 集群
bin/createpg 10.10.10.11 # 另一种等效写法,因为集群只有该实例
添加用户
Pigsty会在数据库中默认创建四个系统用户与四类默认角色,但业务使用数据库时,应当使用专用的业务用户
在新创建的实例上添加新的业务用户,首先在集群层面定义 pg_users
,添加一个新的业务用户定义。
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-test
pg_users: # 定义集群层面的业务用户,数组,每个元素为一个用户定义
- name: test # 用户名为 test,唯一的必选字段
password: test # 密码也是 test
pgbouncer: true # 为该用户启用 Pgbouncer 连接池
roles: [ dbrole_admin ] # 该用户为 管理员, 可以执行DDL
如果初始化实例/集群时,pg_users
中的用户已经定义,那么该用户将在集群初始化完毕后自动创建,否则您需要使用以下命令在 pg-test
集群中创建该业务用户
bin/createuser pg-test test # 在 pg-test 集群上创建 test 用户
添加数据库
接下来,我们在这个实例上添加新的业务数据库,首先在集群层面定义 pg_databases
,添加一个新的业务数据库定义。
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-test
pg_users: [ { name: test , password: test , pgbouncer: true , roles: [ dbrole_admin ] } ]
pg_databases: # 在集群层面定义业务数据库,数组,每一个元素为一个数据库
- name: test # 数据库有很多可选参数,但只有一个数据库名是必选项
如果初始化实例/集群时,pg_databases
中的数据库已经定义,那么该数据库将在集群初始化完毕后自动创建,否则您需要使用以下命令在 pg-test
集群中创建该业务数据库
bin/createdb pg-test test # 在 pg-test 集群上创建 test 数据库
创建完数据库后,您便可以使用连接串,使用该业务数据库访问该业务数据库:
psql postgres://test:test@10.10.10.11/test
pgbench -is10 postgres://test:test@10.10.10.11:5432/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-05-18