Citus简介
citus 是一个 PostgreSQL 插件。通过它,可以实现分布式 PostgreSQL安装和部署
本章我们将讨论 citus 的部署。分布式表
本章将通过一个讨论话题的示例来演示 citus 分布式表的设置coordinator节点的灾难处理
本章讨论 coordinator 的灾难处理。
安装和部署
- 57347
- 2022-09-19T13:15:52+08:00
本章我们将讨论 citus 的部署。
docker 还是二进制?
官方还是推荐使用二进制方式(当然他们更推荐付费的 Azure 云),对于 docker,官方有说明:
The Docker image is intended for development/testing purposes only, and has not been prepared for production use.
The Docker image is intended for development/testing purposes only, and has not been prepared for production use.
除了这个原因之外,docker 方式的话,对coordinator节点进行灾难备份会比较麻烦。
本专题的部署方式
出于简单方面的考虑,本专题采用的部署方式是:
docker 部署
创建网络
docker network create axum-rs-citus
我们创建了名为 axum-rs-citus
的网络,本专题所有节点都使用该网络,以便组成集群。
coordinator 节点
docker run --name axum-rs-citus-coordinator1 \
--network=axum-rs-citus \
-p 127.0.0.1:5432:5432 \
-e POSTGRES_PASSWORD=axum.rs \
-d citusdata/citus:11.0
应用程序(比如我们自己开发的 axum 项目)是通过连接 coordinator 节点来操作,所以需要将 coordinator 节点的端口暴露给宿主机。
docker run --name axum-rs-citus-work1 \
--network=axum-rs-citus \
-e POSTGRES_PASSWORD=axum.rs \
-d citusdata/citus:11.0
docker run --name axum-rs-citus-work2 \
--network=axum-rs-citus \
-e POSTGRES_PASSWORD=axum.rs \
-d citusdata/citus:11.0
我们创建了2个 worker 节点。它们并不需要对外暴露端口。由于所有节点使用的是同一个 docker 网络,这些节点之间是可访问的。
分布式设置
以下所有操作都是在 coordinator 节点
以下所有操作都是在 coordinator 节点
进入 coordinator 节点
首先,我们需要进入到 coordinator 节点:
docker exec -it axum-rs-citus-coordinator1 bash
进入coordinator 节点后,通过 psql
命令连接到 PostgreSQL 数据库:
psql -U postgres
设置 coordinator 节点的信息
SELECT citus_set_coordinator_host('axum-rs-citus-coordinator1', 5432);
添加 worker 节点
SELECT * from citus_add_node('axum-rs-citus-work1', 5432);
SELECT * from citus_add_node('axum-rs-citus-work2', 5432);
列表查看worker节点
SELECT * FROM citus_get_active_worker_nodes();