![](/img/trans.png)
[英]add worker node and rebalance distributed shards problem with PostgreSQL + Citus
[英]Citus: make existing database as worker node of citus
我已经有一个Web应用程序使用的服务器之一上的数据库。 可以说D1
我想在其他与D1有某些关系的服务器上使用新数据库D2创建一个新的Web应用程序。
我想创建citus数据服务器,并将D1和D2都添加为分片表,并将其工作节点添加为各自的服务器。
我在citus文档中发现的是,碎片数据库表是在citus服务器上创建的,并自动分发到可用的工作程序节点。
如何将现有的数据库用作新的citus服务器的工作节点和分片表。
问题有点含糊,我不太了解所要问的问题。
我们有2个服务器S1和S2,其中包含2个数据库D1和D2。 我们想创建一个包含D1和D2的分布式数据库,我们将有一个第三服务器S0,我们希望将其用作citus协调器。
将S1(D1)和S2(D2)用作工作程序不是问题。 Citus在协调器节点上创建主表。 分别在工人处创建碎片。 假设会发生名称冲突,碎片表可以与旧表共存。
但是,您不能盲目使用D1和D2中的现有数据,并期望它们是分片表。 数据需要重新分片。
脚步
阅读有关如何设置群集,选择分发密钥,加载数据的citus文档
在S1,S2和S0上安装/设置citus扩展(协调器)
在S0中将S1和S2添加为工作节点
确定表分配。 有些表需要位于所有节点上(参考表),其中一些是根据某些键进行分片的。
在协调器节点上创建表,使用create_distributed_table / create_reference_table函数进行分配
加载数据,这可能是一个问题。 最简单的方法是将现有数据导出(复制)到外部文件,然后从该文件导入(复制)到citus集群。 导入数据时,您将需要使用协调器节点(S0)。
在切换之前,请使用新集群很好地测试您的应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.