> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Движок `ExternalDistributed` позволяет выполнять `SELECT`-запросы к данным, хранящимся на удалённых серверах MySQL или PostgreSQL. В качестве аргумента принимает движок MySQL или PostgreSQL, что делает возможным сегментирование.

# Движок таблицы ExternalDistributed

Движок `ExternalDistributed` позволяет выполнять `SELECT`-запросы к данным, хранящимся на удалённых серверах MySQL или PostgreSQL. В качестве аргумента принимает движок [MySQL](/ru/reference/engines/table-engines/integrations/mysql) или [PostgreSQL](/ru/reference/engines/table-engines/integrations/postgresql), что делает возможным сегментирование.

<div id="creating-a-table">
  ## Создание таблицы
</div>

```sql theme={null}
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](/ru/reference/statements/create/table).

Структура таблицы может отличаться от структуры исходной таблицы:

* Имена столбцов должны совпадать с именами в исходной таблице, но можно использовать только часть этих столбцов и в любом порядке.
* Типы столбцов могут отличаться от типов в исходной таблице. ClickHouse пытается [преобразовать](/ru/reference/functions/regular-functions/type-conversion-functions#CAST) значения в типы данных ClickHouse.

**Параметры движка**

* `engine` — движок таблицы `MySQL` или `PostgreSQL`.
* `host:port` — адрес сервера MySQL или PostgreSQL.
* `database` — имя удалённой базы данных.
* `table` — имя удалённой таблицы.
* `user` — имя пользователя.
* `password` — пароль пользователя.

<div id="implementation-details">
  ## Подробности реализации
</div>

Поддерживается несколько реплик; перечисляйте их через `|`, а сегменты — через `,`. Например:

```sql theme={null}
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');
```

При указании реплик для каждого сегмента при чтении выбирается одна из доступных реплик. Если соединение установить не удаётся, выбирается следующая реплика, и так далее, пока не будут перебраны все реплики. Если подключиться не удаётся ни к одной из реплик, попытка несколько раз повторяется по той же схеме.

Вы можете указать любое количество сегментов и любое количество реплик для каждого сегмента.

**См. также**

* [движок таблицы MySQL](/ru/reference/engines/table-engines/integrations/mysql)
* [движок таблицы PostgreSQL](/ru/reference/engines/table-engines/integrations/postgresql)
* [движок таблицы Distributed](/ru/reference/engines/table-engines/special/distributed)
