第十五章 Citus 扩展实战 - 第一节:安装 Citus 并创建分布式表
文章目录
第十五章 Citus 扩展实战
第一节 安装 Citus 并创建分布式表
目标:学习在本地环境中搭建一个简单的 Citus 分布式集群(一个协调器和两个工作节点),并掌握创建分布式表的核心命令。
理论之后,实践开始。本节我们将亲手搭建一个 Citus 集群。为了简化,我们将在同一台机器上运行三个不同的 PostgreSQL 实例来模拟协调器和工作节点。在生产环境中,这些节点会部署在不同的物理服务器上。
第一步:安装 Citus 扩展
首先,我们需要在系统中安装 Citus 扩展包。
Debian/Ubuntu:
|
|
(请将版本号 15
和 12.1
替换为最新的稳定版本)
Red Hat/CentOS:
|
|
第二步:初始化集群节点
我们将使用不同的端口(5432, 5433, 5434)来模拟三个独立的 PostgreSQL 实例。
1. 创建数据目录
|
|
2. 初始化每个节点
|
|
3. 修改配置文件 为每个节点设置不同的端口,并加载 Citus 扩展。
协调器 ~/citus_cluster/coordinator/postgresql.conf
:
|
|
工作节点1 ~/citus_cluster/worker1/postgresql.conf
:
|
|
工作节点2 ~/citus_cluster/worker2/postgresql.conf
:
|
|
4. 启动所有节点
|
|
第三步:配置集群
现在,所有节点都在独立运行。我们需要告诉协调器,哪些是它的工作节点。
1. 在每个节点上创建 Citus 扩展
|
|
2. 将工作节点信息添加到协调器
连接到协调器节点,并执行 citus_add_node
函数。
|
|
在 psql
提示符中执行:
|
|
3. 验证集群状态
在协调器上,你可以查看 citus_nodes
视图来确认所有节点都已成功加入集群。
|
|
你应该能看到一个协调器节点和两个状态为 active
的工作节点。
第四步:创建第一个分布式表
集群已经就绪,现在我们可以创建并分发一个表了。我们将使用一个简化的电商 products
表作为例子。
1. 在协调器上创建表
|
|
此时,products
表只存在于协调器节点上,它是一个普通的本地表。
2. 将表分布式
使用 create_distributed_table()
函数,指定表名和分布列。我们将使用 product_id
作为分布列。
|
|
执行此命令后,Citus 会:
- 在协调器上将
products
表转换成一个分布式表的元数据入口。 - 自动连接到所有工作节点,并在每个节点上创建表的分片(Shards)。
- 将数据插入的逻辑路由到工作节点。
3. 插入数据并验证
|
|
数据现在已经被自动地、透明地存储到了工作节点的分片上。你无法直接从协调器上看到物理数据文件,但可以通过查询 citus_shards
视图来查看分片的分布情况。
📌 小结
恭喜你,你已经成功搭建并运行了一个本地的 Citus 分布式数据库集群!
- 我们学会了如何初始化和配置多个 PostgreSQL 实例来模拟集群。
- 掌握了使用
citus_add_node
函数将工作节点注册到协调器。 - 掌握了使用
create_distributed_table
函数将一个普通表转换为分布式表的核心操作。
虽然本地模拟集群简化了网络配置,但其核心步骤与在生产环境中部署多台物理服务器是完全一致的。在下一节,我们将深入探讨 Citus 的分片策略。