# clickhouse-copier {#clickhouse-copier} 将数据从一个群集中的表复制到另一个(或相同)群集中的表。 您可以运行多个 `clickhouse-copier` 不同服务器上的实例执行相同的作业。 ZooKeeper用于同步进程。 开始后, `clickhouse-copier`: - 连接到ZooKeeper并且接收: - 复制作业。 - 复制作业的状态。 - 它执行的工作。 每个正在运行的进程都会选择源集群的“最接近”分片,然后将数据复制到目标集群,并在必要时重新分片数据。 `clickhouse-copier` 跟踪ZooKeeper中的更改,并实时应用它们。 为了减少网络流量,我们建议运行 `clickhouse-copier` 在源数据所在的同一服务器上。 ## 运行Clickhouse-copier {#running-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`。 - `base-dir` — 日志和辅助文件的路径。 启动时,`clickhouse-copier`在`$base-dir`中创建`clickhouse-copier_YYYYMMHHSS_`子目录。 如果省略此参数,则会在启动`clickhouse-copier`的目录中创建目录。 ## Zookeeper.xml格式 {#format-of-zookeeper-xml} ``` xml trace 100M 3 127.0.0.1 2181 ``` ## 复制任务的配置 {#configuration-of-copying-tasks} ``` 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`,运行任务的进程数也会发生变化。 [原始文章](https://clickhouse.tech/docs/en/operations/utils/clickhouse-copier/)