問題描述:
在兩分片,每個分片兩個副本的集群環境中:使用分布式DDL創建與刪除ReplicatedMergeTree表都沒問題。
問題出在:刪除表后,再次創建此表,會報出表已存在,無法創建。
查詢zk后,發現刪除此表后,表的元數據還在zk中,要等10分鍾左右,表的元數據才被清除。
如何在ch中刪除表后,zk中的元數據也被同步刪除?
https://github.com/ClickHouse/ClickHouse/issues/18382
處理辦法:
This is a behavior related to Atomic database engine.
When a table in Atomic database been dropped it is not removed immediately but after 480s.
config.xml
<database_atomic_delay_before_drop_table_sec>480</database_atomic_delay_before_drop_table_sec>
https://github.com/ClickHouse/ClickHouse/blob/master/tests/config/config.d/database_atomic.xml
You can
- use ordinary database instead of atomic.
create database ... Engine=Ordinary. - use uniq ZK path using a new var. {uuid}
/clickhouse/tables/{layer}-{shard}-{uuid}/streams.streams_apps_ext_log_test - reduce
database_atomic_delay_before_drop_table_sec = 0;&drop table ... sync(sync不需要,直接刪除表即可)
<yandex>
<database_atomic_delay_before_drop_table_sec>60</database_atomic_delay_before_drop_table_sec>
</yandex>
