外部分布式
ExternalDistributed
引擎允许对存储在远程服务器 MySQL 或 PostgreSQL 上的数据执行 SELECT
查询。接受 MySQL 或 PostgreSQL 引擎作为参数,因此可以进行分片。
创建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
...
) ENGINE = ExternalDistributed('engine', 'host:port', 'database', 'table', 'user', 'password');
请参阅 CREATE TABLE 查询的详细说明。
表结构可能与原始表结构不同
- 列名应与原始表中的列名相同,但您可以只使用其中一些列,并且可以按任意顺序使用。
- 列类型可能与原始表中的列类型不同。ClickHouse 会尝试将值 转换 为 ClickHouse 数据类型。
引擎参数
engine
- 表引擎MySQL
或PostgreSQL
。host:port
- MySQL 或 PostgreSQL 服务器地址。database
- 远程数据库名称。table
- 远程表名称。user
- 用户名。password
- 用户密码。
实现细节
支持多个副本,必须用 |
列出,分片必须用 ,
列出。例如
CREATE TABLE test_shards (id UInt32, name String, age UInt32, money UInt32) ENGINE = ExternalDistributed('MySQL', `mysql{1|2}:3306,mysql{3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
在指定副本时,读取时会为每个分片选择一个可用的副本。如果连接失败,则选择下一个副本,依此类推,直到所有副本都尝试过。如果所有副本的连接尝试都失败,则会以相同的方式重复尝试几次。
您可以为每个分片指定任意数量的分片和任意数量的副本。
另请参阅