警告

多节点支持已弃用.

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

此过程在访问节点上使用,以在分布式数据库的数据节点上执行 SQL 命令。例如,一个用例是在分布式数据库中创建所需的角色和权限。

该过程可以事务性地运行分布式命令,因此命令要么在所有地方执行,要么在任何地方都不执行。但是,并非所有 SQL 命令都可以在事务中运行。这可以通过参数 transactional 进行切换。请注意,如果执行不是事务性的,则在一个数据节点上发生故障需要手动处理任何引入的不一致性。

请注意,该命令在访问节点本身上执行,并且不可能在一个调用中链接多个命令。

重要提示

您不能使用某些 SQL 命令运行 distributed_exec。例如,ALTER EXTENSION 不起作用,因为它不能在 TimescaleDB 扩展已加载后调用。

名称类型描述
queryTEXT要在数据节点上执行的命令。
名称类型描述
node_listARRAY应在其上执行命令的数据节点数组。如果未指定,则默认为所有数据节点。
transactionalBOOLEAN允许指定语句的执行是否应为事务性的。默认为 TRUE。

在分布式数据库的所有数据节点上创建角色 testrole

CALL distributed_exec($$ CREATE USER testrole WITH LOGIN $$);

在两个特定的数据节点上创建角色 testrole

CALL distributed_exec($$ CREATE USER testrole WITH LOGIN $$, node_list => '{ "dn1", "dn2" }');

在所有数据节点上创建表 example

CALL distributed_exec($$ CREATE TABLE example (ts TIMESTAMPTZ, value INTEGER) $$);

在数据节点上创建新数据库 dist_database,这需要将 transactional 设置为 FALSE

CALL distributed_exec('CREATE DATABASE dist_database', transactional => FALSE);

关键词

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