mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-12 17:32:32 +00:00
54 lines
3.7 KiB
Markdown
54 lines
3.7 KiB
Markdown
---
|
||
sidebar_position: 12
|
||
sidebar_label: ExternalDistributed
|
||
---
|
||
|
||
# ExternalDistributed {#externaldistributed}
|
||
|
||
Движок `ExternalDistributed` позволяет выполнять запросы `SELECT` для таблиц на удаленном сервере MySQL или PostgreSQL. Принимает в качестве аргумента табличные движки [MySQL](../../../engines/table-engines/integrations/mysql.md) или [PostgreSQL](../../../engines/table-engines/integrations/postgresql.md), поэтому возможно шардирование.
|
||
|
||
## Создание таблицы {#creating-a-table}
|
||
|
||
``` sql
|
||
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](../../../sql-reference/statements/create/table.md#create-table-query).
|
||
|
||
Структура таблицы может отличаться от структуры исходной таблицы:
|
||
|
||
- Имена столбцов должны быть такими же, как в исходной таблице, но можно использовать только некоторые из этих столбцов и в любом порядке.
|
||
- Типы столбцов могут отличаться от типов в исходной таблице. ClickHouse пытается [привести](../../../sql-reference/functions/type-conversion-functions.md#type_conversion_function-cast) значения к типам данных ClickHouse.
|
||
|
||
**Параметры движка**
|
||
|
||
- `engine` — табличный движок `MySQL` или `PostgreSQL`.
|
||
- `host:port` — адрес сервера MySQL или PostgreSQL.
|
||
- `database` — имя базы данных на сервере.
|
||
- `table` — имя таблицы.
|
||
- `user` — имя пользователя.
|
||
- `password` — пароль пользователя.
|
||
|
||
## Особенности реализации {#implementation-details}
|
||
|
||
Поддерживает несколько реплик, которые должны быть перечислены через `|`, а шарды — через `,`. Например:
|
||
|
||
```sql
|
||
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');
|
||
```
|
||
|
||
При указании реплик для каждого из шардов при чтении выбирается одна из доступных реплик. Если соединиться не удалось, то выбирается следующая реплика, и так для всех реплик. Если попытка соединения не удалась для всех реплик, то сервер ClickHouse снова пытается соединиться с одной из реплик, перебирая их по кругу, и так несколько раз.
|
||
|
||
Вы можете указать любое количество шардов и любое количество реплик для каждого шарда.
|
||
|
||
**Смотрите также**
|
||
|
||
- [Табличный движок MySQL](../../../engines/table-engines/integrations/mysql.md)
|
||
- [Табличный движок PostgreSQL](../../../engines/table-engines/integrations/postgresql.md)
|
||
- [Табличный движок Distributed](../../../engines/table-engines/special/distributed.md)
|