0

我有一个有 4 个节点的 Citus (v10.1) 分片 PostgreSQL (v13) 集群。主节点地址为 10.0.0.2,其余为 0.5 尝试管理我的分片表时,出现此错误:

错误:10.0.0.5:5432 是元数据节点,但不同步
提示:如果节点已启动,请等到元数据同步到它并重试。

我一直在等待。30 分钟或更长时间后,我确实做到了drop schema ... cascadedrop extension Citus cascade;在重新导入数据、创建分片后,我再次收到相同的错误消息并且无法通过它。

一些附加信息:

可能是实际提示的另一件事是我无法通过 create_distributed_function() 分发我的函数,因为它说它处于死锁状态,并且无法提交事务。

我检查了空闲进程,没有什么不寻常的。

像这样创建分片:

SELECT create_distributed_table('test_table', 'id');
SELECT alter_distributed_table('test_table', shard_count:=128, cascade_to_colocated:=true);

谷歌搜索结果中没有关于这个主题的主题。

编辑1:

我确实轰炸了(每秒 20k-200k 次点击)我的分片,大量请求一个函数,如果设置了特定参数,该函数会插入/更新或删除。

4

1 回答 1

0

这是一个相当奇怪的错误。可能是您在https://github.com/citusdata/citus/issues/4721中遇到了问题

您是否有由序列生成的列默认值?如果是这样,请考虑对这些列使用 bigserial 类型。

如果它不起作用,您可以选择禁用元数据同步,SELECT stop_metadata_sync)to_node('10.0.0.5','5432')然后SELECT start_metadata_sync_to_node('10.0.0.5','5432')选择停止等待元数据同步并(可选)从头开始重试元数据创建。

于 2021-08-13T18:56:34.057 回答