警告

多节点支持已弃用.

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 上编辑此页面