MergeTree 转换为 ReplicatedMergeTree
我们使用 MergeTree
来表示 MergeTree
系列 中的所有表引擎,ReplicatedMergeTree
同理。
如果你有一个手动同步的 MergeTree
表,可以将其转换为可复制表。如果已经在 MergeTree
表中收集了大量数据,并且现在要启用复制,则可以执行这些操作。
如果各个副本上的数据不一致,则首先对其进行同步,或者除保留的一个副本外,删除其他所有副本上的数据。
重命名现有的 MergeTree
表,然后使用旧名称创建 ReplicatedMergeTree
表。
将数据从旧表移动到新表(/var/lib/clickhouse/data/db_name/table_name/
)目录内的 ‘detached
’ 目录中。
然后在其中一个副本上运行ALTER TABLE ATTACH PARTITION
,将这些数据片段添加到工作集中。
ReplicatedMergeTree 转换为 MergeTree
使用其他名称创建 MergeTree
表。将具有ReplicatedMergeTree
表数据的目录中的所有数据移动到新表的数据目录中。然后删除ReplicatedMergeTree
表并重新启动服务器。
如果你想在不启动服务器的情况下清除 ReplicatedMergeTree
表:
删除元数据目录中的相应 .sql 文件(/var/lib/clickhouse/metadata/
)。
删除 ZooKeeper 中的相应路径(/path_to_table/replica_name
)。
之后,你可以启动服务器,创建一个 MergeTree
表,将数据移动到其目录,然后重新启动服务器。