--- toc_priority: 59 toc_title: clickhouse-copier --- # clickhouse-copier {#clickhouse-copier} Копирует данные из таблиц одного кластера в таблицы другого (или этого же) кластера. Можно запустить несколько `clickhouse-copier` для разных серверах для выполнения одного и того же задания. Для синхронизации между процессами используется ZooKeeper. После запуска, `clickhouse-copier`: - Соединяется с ZooKeeper и получает: - Задания на копирование. - Состояние заданий на копирование. - Выполняет задания. Каждый запущенный процесс выбирает "ближайший" шард исходного кластера и копирует данные в кластер назначения, при необходимости перешардируя их. `clickhouse-copier` отслеживает изменения в ZooKeeper и применяет их «на лету». Для снижения сетевого трафика рекомендуем запускать `clickhouse-copier` на том же сервере, где находятся исходные данные. ## Запуск Clickhouse-copier {#zapusk-clickhouse-copier} Утилиту следует запускать вручную следующим образом: ``` bash $ clickhouse-copier --daemon --config zookeeper.xml --task-path /task/path --base-dir /path/to/dir ``` Параметры запуска: - `daemon` - запускает `clickhouse-copier` в режиме демона. - `config` - путь к файлу `zookeeper.xml` с параметрами соединения с ZooKeeper. - `task-path` - путь к ноде ZooKeeper. Нода используется для синхронизации между процессами `clickhouse-copier` и для хранения заданий. Задания хранятся в `$task-path/description`. - `task-file` - необязательный путь к файлу с описанием конфигурация заданий для загрузки в ZooKeeper. - `task-upload-force` - Загрузить `task-file` в ZooKeeper даже если уже было загружено. - `base-dir` - путь к логам и вспомогательным файлам. При запуске `clickhouse-copier` создает в `$base-dir` подкаталоги `clickhouse-copier_YYYYMMHHSS_`. Если параметр не указан, то каталоги будут создаваться в каталоге, где `clickhouse-copier` был запущен. ## Формат Zookeeper.xml {#format-zookeeper-xml} ``` xml trace 100M 3 127.0.0.1 2181 ``` ## Конфигурация заданий на копирование {#konfiguratsiia-zadanii-na-kopirovanie} ``` xml false 127.0.0.1 9000 ... ... 2 1 0 3 1 source_cluster test hits destination_cluster test hits2 ENGINE=ReplicatedMergeTree('/clickhouse/tables/{cluster}/{shard}/hits2', '{replica}') PARTITION BY toMonday(date) ORDER BY (CounterID, EventDate) jumpConsistentHash(intHash64(UserID), 2) CounterID != 0 '2018-02-26' '2018-03-05' ... ... ... ``` `clickhouse-copier` отслеживает изменения `/task/path/description` и применяет их «на лету». Если вы поменяете, например, значение `max_workers`, то количество процессов, выполняющих задания, также изменится.