全部产品

从自建ClickHouse迁移上云

更新时间:2020-11-05 14:46

本文主要介绍如何从自建的ClickHouse将数据迁移到云数据库ClickHouse上。

利用原生工具clickhouse-client进行数据迁移

  1. 查看自建ClickHouse数据库中的数据表名列表。

    clickhouse-client --host="<old host>" --port="<old port>" --user="<old user name>" --password="<old password>" --query="SHOW tables"  > table.list
    • <old host>:自建ClickHouse数据库主机地址。

    • <old port>:自建ClickHouse数据库端口。

    • <old user name>:登录自建ClickHouse数据库的用户名,拥有数据库的读写权限。

    • <old password>:上述用户名对应的密码。

  2. 导出自建ClickHouse数据库建表DDL。

    clickhouse-client --host="<old host>" --port="<oldport>" --user="<old user name>" --password="<old password>" --query="SHOW CREATE TABLE default.<table_name>"  > table.sql

    <table_name>:目标迁移的表名,不支持批量导出。

  3. 将建表DDL导入到云数据库ClickHouse。

    clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  < table.sql
    • <new host>:云数据库ClickHouse主机地址。

    • <new port>:云数据库ClickHouse数据库端口。

    • <new user name>:登录云数据库ClickHouse数据库的用户名,拥有数据库的读写权限。

    • <new password>:上述用户名对应的密码。

  4. 将数据从自建ClickHouse数据库导出到云数据库ClickHouse。

    • 通过CSV文件导出导入。

      1. 将数据从自建ClickHouse数据库导出。

        clickhouse-client --host="<old host>" --port="<oldport>" --user="<old user name>" --password="<old password>"  --query="select * from default.<table_name> FORMAT CSV"  > table.csv
      2. 导入数据到云数据库ClickHouse。

        clickhouse-client --host="<new host>" --port="<new port>" --user="<new user name>" --password="<new password>"  --query="insert into default.<table_name> FORMAT CSV"  < table.csv
    • 流式导出导入。

      clickhouse-client --host="<old host>" --port="<old port>" --user="<user name>" --password="<password>"  --query="select * from default.<table_name> FORMAT CSV" | 
      clickhouse-client --host="<new host>" --port="<new port>" --user="<user name>" --password="<password>"   --query="INSERT INTO default.<table_name> FORMAT CSV"