警告

多节点支持已停止.

TimescaleDB v2.13 是支持 PostgreSQL 13、14 和 15 版本的最后一个包含多节点支持的版本。

在多节点环境中工作时,您可能会发现随着时间的推移,集群中需要更多或更少的数据节点。在创建分布式超表时,您可以选择使用多少个可用节点。您还可以从集群中添加和删除数据节点,并根据需要将数据在数据节点上的数据块之间移动以释放存储空间。

您可以使用此查询检查分布式超表正在使用哪些数据节点。在此示例中,我们的分布式超表名为 conditions

SELECT hypertable_name, data_nodes
FROM timescaledb_information.hypertables
WHERE hypertable_name = 'conditions';

此查询的结果如下所示

hypertable_name | data_nodes
-----------------+---------------------------------------
conditions | {data_node_1,data_node_2,data_node_3}

默认情况下,当您创建分布式超表时,它会使用所有可用数据节点。要将其限制为特定节点,请将 data_nodes 参数传递给 create_distributed_hypertable

当您向数据库添加额外的数据节点时,需要将它们添加到分布式超表中,以便数据库可以使用它们。

  1. 在访问节点上,于 psql 提示符下,添加数据节点

    SELECT add_data_node('node3', host => 'dn3.example.com');
  2. 将新数据节点附加到分布式超表

    SELECT attach_data_node('node3', hypertable => 'hypertable_name');
重要

当您附加新的数据节点时,分布式超表的分区配置会更新以适应新增数据节点,并且哈希分区数量会自动增加以匹配。您可以通过将函数参数 repartition 设置为 FALSE 来防止这种情况发生。

当您将新的数据节点附加到分布式超表时,可以将超表中现有数据移动到新节点,以释放现有节点上的存储空间,并更好地利用新增容量。

警告

在数据节点之间移动数据块的能力是一项正在积极开发中的实验性功能。我们建议您不要在生产环境中使用此功能。

使用此查询移动数据

CALL timescaledb_experimental.move_chunk('_timescaledb_internal._dist_hyper_1_1_chunk', 'data_node_3', 'data_node_2');

移动操作使用多个事务,这意味着如果出现问题,您无法自动回滚事务。如果移动操作失败,故障会记录一个操作 ID,您可以使用该 ID 清理相关节点上遗留的任何状态。

使用此查询清理失败的移动操作。在此示例中,失败移动的操作 ID 为 ts_copy_1_31

CALL timescaledb_experimental.cleanup_copy_chunk_operation('ts_copy_1_31');

您还可以从现有分布式超表中删除数据节点。

警告

您不能删除仍包含分布式超表数据的数据节点。在删除数据节点之前,请检查其所有数据是否已被删除或移动,或者您是否已将数据复制到其他数据节点。

使用此查询删除数据节点。在此示例中,我们的分布式超表名为 conditions

SELECT detach_data_node('node1', hypertable => 'conditions');

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面 in GitHub.