Copie les données des tables d'un cluster vers des tables d'un autre cluster (ou du même cluster).
Vous pouvez exécuter plusieurs `clickhouse-copier` instances sur différents serveurs pour effectuer le même travail. ZooKeeper est utilisé pour synchroniser les processus.
Après le démarrage de, `clickhouse-copier`:
- Se connecte à ZooKeeper et reçoit:
- La copie de tâches.
- L'état de la copie d'emplois.
- Il effectue les travaux.
Chaque processus en cours choisit le “closest” eclat du cluster source et copie les données dans le cluster de destination, la refragmentation les données si nécessaire.
`clickhouse-copier` suit les changements dans ZooKeeper et les applique à la volée.
Pour réduire le trafic réseau, nous vous recommandons de `clickhouse-copier` sur le même serveur où se trouvent les données source.
-`daemon` — Starts `clickhouse-copier` en mode démon.
-`config` — The path to the `zookeeper.xml` fichier avec les paramètres pour la connexion à la Gardienne.
-`task-path` — The path to the ZooKeeper node. This node is used for syncing `clickhouse-copier` processus et stockage des tâches. Les tâches sont stockées dans `$task-path/description`.
-`task-file` — Optional path to file with task configuration for initial upload to ZooKeeper.
-`task-upload-force` — Force upload `task-file` même si le nœud existe déjà.
-`base-dir` — The path to logs and auxiliary files. When it starts, `clickhouse-copier` crée `clickhouse-copier_YYYYMMHHSS_<PID>` les sous-répertoires `$base-dir`. Si ce paramètre est omis, les répertoires sont créés dans le répertoire où `clickhouse-copier` a été lancé.
## Format de zookeeper.XML {#format-of-zookeeper-xml}
``` xml
<yandex>
<logger>
<level>trace</level>
<size>100M</size>
<count>3</count>
</logger>
<zookeeper>
<nodeindex="1">
<host>127.0.0.1</host>
<port>2181</port>
</node>
</zookeeper>
</yandex>
```
## Configuration des tâches de copie {#configuration-of-copying-tasks}
``` xml
<yandex>
<!-- Configuration of clusters as in an ordinary server config -->
<!-- Optional expression that filter data while pull them from source servers -->
<where_condition>CounterID != 0</where_condition>
<!-- This section specifies partitions that should be copied, other partition will be ignored.
Partition names should have the same format as
partition column of system.parts table (i.e. a quoted text).
Since partition key of source and destination cluster could be different,
these partition names specify destination partitions.
NOTE: In spite of this section is optional (if it is not specified, all partitions will be copied),
it is strictly recommended to specify them explicitly.
If you already have some ready partitions on destination cluster they
will be removed at the start of the copying since they will be interpeted
as unfinished data from the previous copying!!!
-->
<enabled_partitions>
<partition>'2018-02-26'</partition>
<partition>'2018-03-05'</partition>
...
</enabled_partitions>
</table_hits>
<!-- Next table to copy. It is not copied until previous table is copying. -->
</table_visits>
...
</table_visits>
...
</tables>
</yandex>
```
`clickhouse-copier` suit les changements dans `/task/path/description` et les applique à la volée. Par exemple, si vous modifiez la valeur de `max_workers`, le nombre de processus exécutant des tâches changera également.