Clickhouse-copier DB :: Исключение: Запрошенный кластер 'xxx' не найден - PullRequest
1 голос
/ 13 июня 2019

Я тестирую Clickhouse-copier для копирования данных из одного кластера в другой.

Я настроил одноузловой кластер с одной репликой, который называется xxx .

SELECT *
FROM system.clusters

┌─cluster─┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─
│ xxx     │         1 │            1 │           1 │ 127.0.0.1 
└─────────┴───────────┴──────────────┴─────────────┴───────────
┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┐
│ 127.0.0.1    │ 9000 │        1 │ default │                  │
┴──────────────┴──────┴──────────┴─────────┴──────────────────┘

Я также создал базу данных в этом кластере cluster_xxx и две таблицы local_data и dist_data.

CREATE TABLE cluster_xxx.local_data on cluster xxx (
`countryName` String, 
`countryCode` String, 
`indicatorName` String,
`indicatorCode` String
) ENGINE = MergeTree() 
ORDER BY countryName 
SETTINGS index_granularity = 8192

CREATE TABLE cluster_xxx.dist_data on cluster xxx
 (`countryName` String,
 `countryCode` String,
`indicatorName` String,
 `indicatorCode` String
) ENGINE = Distributed(xxx, cluster_xxx, local_data)

Затем я подготовил два файла конфигурации для Clickhouse-копир zookeeper.zml:

<yandex>
        <logger>
                <level>trace</level>
                <size>100M</size>
                <count>3</count>
        </logger>
        <zookeeper>
                <node>
                        <host>localhost</host>
                        <port>2181</port>
                </node>
        </zookeeper>
</yandex>

и schema.xml

<yandex>
<remote_servers>
    <source_cluster>
        <shard>
            <replica>
                <host>127.0.0.1</host>
                <port>9000</port>
            </replica>
        </shard>
    </source_cluster>
    <target_cluster>
        <shard>
            <replica>
                <host>192.168.0.110</host>
                <port>9000</port>
            </replica>
        </shard>
    </target_cluster>
</remote_servers>

<max_workers>1</max_workers>
<tables>
    <table_events>
        <cluster_pull>xxx</cluster_pull>
        <database_pull>cluster_xxx</database_pull>
        <table_pull>dist_data</table_pull>

        <cluster_push>test_cluster</cluster_push>
        <database_push>cluster_test</database_push>
        <table_push>dist_data</table_push>

    <engine>ENGINE=MergeTree('/clickhouse/tables/test_cluster/cluster_test/dist_data', 
'{replica}')</engine>
        <sharding_key>rand()</sharding_key>
    </table_events>
</tables>
</yandex>

, которые я положил на Zookeeper zookeeper-client create /clickhouse/description "$(cat schema.xml)"

Когда я запускаю clickhouse-copier --config-file=zookeeper.zml --task-path=/clickhouse выдается исключение

2019.06.12 23:06:06.668703 [ 1 ] {} <Error> : virtual int 
DB::ClusterCopierApp::main(const std::vector<std::basic_string<char> >&): Code: 170, e.displayText() =
 DB::Exception: Requested cluster 'xxx' not found, Stack trace:

0. clickhouse-copier(StackTrace::StackTrace()+0x16) [0x6834a66]
1. clickhouse-copier(DB::Exception::Exception(std::string const&, int)+0x1f) [0x317311f]
2. clickhouse-copier(DB::Context::getCluster(std::string const&) const+0x7f) [0x5e6115f]
3. clickhouse-copier(DB::ClusterCopier::init()+0x1181) [0x3213b51]
4. clickhouse-copier(DB::ClusterCopierApp::mainImpl()+0x5dd) [0x320383d]
5. clickhouse-copier(DB::ClusterCopierApp::main(std::vector<std::string, std::allocator<std::string> > const&)+0x1a) [0x315619a]
6. clickhouse-copier(Poco::Util::Application::run()+0x26) [0x6a84ec6]
7. clickhouse-copier(Poco::Util::ServerApplication::run(int, char**)+0x136) [0x6a9f076]
8. clickhouse-copier(mainEntryClickHouseClusterCopier(int, char**)+0x9a) [0x32001aa]
9. clickhouse-copier(main+0x179) [0x314e609]
10. /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f345138a3d5]
11. clickhouse-copier() [0x316fd37]

В чем может быть причина, что Clickhouse-copier не видит мой кластер?Какой момент в процессе настройки мне не хватает?

Дополнительная информация:

  • Я запускаю Clickhouse-copier на исходном компьютере.
  • Источник ицелевые машины являются vms и работают на Centos 7
  • Кластер на целевом сервере не настроен, поскольку в этом нет необходимости, ошибка относится к исходному кластеру
  • Брандмауэр выключен.

1 Ответ

1 голос
/ 14 июня 2019

Похоже, что ошибка в schema.xml : source_cluster и target_cluster теги в remote_servers должны быть названы как имена кластеров ,

Вам необходимо заменить source_cluster на xxx и target_cluster на test_cluster .

schema.xml:

<yandex>
<remote_servers>
    <xxx> <!--  ← ← ← -->
        <shard>
            <replica>
                <host>127.0.0.1</host>
                <port>9000</port>
            </replica>
        </shard>
    </xxx>
    <test_cluster> <!--  ← ← ← -->
        <shard>
            <replica>
                <host>192.168.0.110</host>
                <port>9000</port>
            </replica>
        </shard>
    </test_cluster>
</remote_servers>

<max_workers>1</max_workers>
<tables>
    <table_events>
        <cluster_pull>xxx</cluster_pull>
        <database_pull>cluster_xxx</database_pull>
        <table_pull>dist_data</table_pull>

        <cluster_push>test_cluster</cluster_push>
        <database_push>cluster_test</database_push>
        <table_push>dist_data</table_push>

        <engine>ENGINE=MergeTree('/clickhouse/tables/test_cluster/cluster_test/dist_data', '{replica}')</engine>
        <sharding_key>rand()</sharding_key>
    </table_events>
</tables>
</yandex>
...