Я создал реплицированную таблицу дерева слияний, как показано ниже:
CREATE TABLE probe.a on cluster dwh (
instime UInt64,
psn UInt64
) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/probe/a', '{replica}') PARTITION BY instime ORDER BY (psn);
Затем я создал распределенную таблицу как:
CREATE TABLE probe.a_distributed on cluster dwh (
instime UInt64,
psn UInt64
) ENGINE = Distributed(dwh,probe, a, rand());
Затем я добавил макрос на каждом сервере:
Сервер 1
<yandex>
<macros replace="true">
<shard>1</shard>
<replica>server1.com</replica>
</macros>
</yandex>
Сервер 2
<yandex>
<macros replace="true">
<shard>2</shard>
<replica>server2.com</replica>
</macros>
</yandex>
Удаленные серверы:
<dwh>
<!-- shard 01 -->
<shard>
<replica>
<host>server1.com</host>
<port>9000</port>
<user>default</user>
<password>test12pwd</password>
</replica>
</shard>
<!-- shard 02 -->
<shard>
<replica>
<host>server2.com</host>
<port>9000</port>
<user>default</user>
<password>test12pwd</password>
</replica>
</shard>
</dwh>
У меня две проблемы при удалении раздела:
Когда я удаляю раздел с использованием распределенной таблицы
ALTER TABLE probe.a в кластере dwh DROP PARTITION '2020-03-13';
Я получаю ошибку:
DB :: Exception: Таблица «а» реплицируется, но осколок № 4 не реплицируется в соответствии с определением кластера. Возможно, истина забыта в конфигурации кластера. (версия 19.16.14.65) (версия 19.16.14.65)
Удалено разделение по отдельности, но в распределенной таблице все еще отображается половина строки, но когда я проверяю локально, нет строки
Как можно решить эту проблему с распределенной таблицей разрешаться для данных, которые будут отсеяны без репликации?