> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Миграция в ClickHouse с использованием clickhouse-local

> Руководство по миграции в ClickHouse с использованием clickhouse-local

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-01.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=2901f6230caf3638502a3ca4835ae0ac" size="lg" alt="Миграция самоуправляемого ClickHouse" width="2048" height="1208" data-path="images/integrations/migration/ch-local-01.webp" />

Вы можете использовать ClickHouse, а точнее [`clickhouse-local`](/docs/ru/concepts/features/tools-and-utilities/clickhouse-local)
как ETL-инструмент для миграции данных из вашей текущей системы баз данных в ClickHouse Cloud, если для этой системы баз данных доступен либо
предоставляемый ClickHouse [движок интеграции](/docs/ru/reference/engines/table-engines/index#integration-engines), либо [табличная функция](/docs/ru/reference/functions/table-functions/index),
либо JDBC driver или ODBC driver от поставщика системы.

Иногда мы называем этот метод миграции методом "pivot", поскольку он использует промежуточную точку для переноса данных из исходной базы данных в целевую. Например, этот метод может потребоваться, если по требованиям безопасности из частной или внутренней сети разрешены только исходящие соединения. В таком случае нужно сначала извлечь данные из исходной базы данных с помощью clickhouse-local, а затем отправить их в целевую базу данных ClickHouse, где clickhouse-local выступает в роли промежуточного звена.

ClickHouse предоставляет движки интеграции и табличные функции (которые на лету создают движки интеграции) для [MySQL](/docs/ru/reference/engines/table-engines/integrations/mysql), [PostgreSQL](/docs/ru/reference/engines/table-engines/integrations/postgresql), [MongoDB](/docs/ru/reference/engines/table-engines/integrations/mongodb) и [SQLite](/docs/ru/reference/engines/table-engines/integrations/sqlite).
Для всех остальных популярных систем баз данных у их поставщиков доступны JDBC driver или ODBC driver.

<div id="what-is-clickhouse-local">
  ## Что такое clickhouse-local?
</div>

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-02.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=a9897ab67501ac2c5311d35234bb6a3c" size="lg" alt="Миграция самоуправляемого ClickHouse" width="2048" height="1160" data-path="images/integrations/migration/ch-local-02.webp" />

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

На одном сервере движок базы данных ClickHouse запускается как часть программы `clickhouse-server`. Доступ к базе данных (пути, пользователи, параметры безопасности, ...) настраивается в файле конфигурации сервера.

Инструмент `clickhouse-local` позволяет использовать движок базы данных ClickHouse изолированно как утилиту командной строки для сверхбыстрой обработки SQL-данных с большим объёмом входных и выходных данных без необходимости настраивать и запускать сервер ClickHouse.

<div id="installing-clickhouse-local">
  ## Установка clickhouse-local
</div>

Вам понадобится хост для `clickhouse-local` с сетевым доступом как к вашей текущей исходной базе данных, так и к целевому сервису ClickHouse Cloud.

На этом хосте загрузите подходящую сборку `clickhouse-local` в зависимости от операционной системы вашего компьютера:

<Tabs>
  <Tab title="Linux">
    1. Самый простой способ загрузить `clickhouse-local` — выполнить следующую команду:

    ```bash theme={null}
    curl https://clickhouse.com/ | sh
    ```

    1. Запустите `clickhouse-local` (он просто выведет свою версию):

    ```bash theme={null}
    ./clickhouse-local
    ```
  </Tab>

  <Tab title="macOS">
    1. Самый простой способ загрузить `clickhouse-local` — выполнить следующую команду:

    ```bash theme={null}
    curl https://clickhouse.com/ | sh
    ```

    1. Запустите `clickhouse-local` (он просто выведет свою версию):

    ```bash theme={null}
    ./clickhouse local
    ```
  </Tab>
</Tabs>

<Info>
  **Важно**

  Во всех примерах в этом руководстве используются команды Linux для запуска `clickhouse-local` (`./clickhouse-local`).
  Чтобы запустить `clickhouse-local` на Mac, используйте `./clickhouse local`.
</Info>

<Tip>
  **Добавьте удалённую систему в IP Access List вашего сервиса ClickHouse Cloud**

  Чтобы функция `remoteSecure` могла подключиться к вашему сервису ClickHouse Cloud, IP-адрес удалённой системы должен быть разрешён в IP Access List. Разверните раздел **Управление вашим IP Access List** под этой подсказкой, чтобы получить дополнительную информацию.
</Tip>

<Accordion title="Управление IP Access List">
  В списке сервисов ClickHouse Cloud выберите сервис, с которым будете работать, и перейдите в раздел **Settings**. Если в IP Access List нет IP-адреса или диапазона IP-адресов удалённой системы, которой нужно подключиться к вашему сервису ClickHouse Cloud, это можно исправить с помощью **Add IPs**:

  <div className="ch-image-md">
    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/ip-allow-list-check-list.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=14fc8b7b7a3e42ebdd45507e630d4702" alt="Проверьте, разрешён ли трафик с вашего IP-адреса в IP Access List сервиса" width="3840" height="2042" data-path="images/_snippets/ip-allow-list-check-list.webp" />
    </Frame>
  </div>

  Добавьте отдельный IP-адрес или диапазон адресов, которым нужно подключаться к вашему сервису ClickHouse Cloud. При необходимости измените поля формы, а затем нажмите **Save**.

  <div className="ch-image-md">
    <Frame>
      <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/ip-allow-list-add-current-ip.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=cab1bb3c9ae950e59acdb2cd5daeaea4" alt="Добавьте свой текущий IP-адрес в IP Access List в ClickHouse Cloud" width="1188" height="796" data-path="images/_snippets/ip-allow-list-add-current-ip.webp" />
    </Frame>
  </div>
</Accordion>

<div id="example-1-migrating-from-mysql-to-clickhouse-cloud-with-an-integration-engine">
  ## Пример: миграция из MySQL в ClickHouse Cloud с использованием движка Integration
</div>

Мы будем использовать [движок интеграции](/docs/ru/reference/engines/table-engines/integrations/mysql) (динамически создаваемый с помощью [табличной функции mysql](/docs/ru/reference/functions/table-functions/mysql)) для чтения данных из исходной базы данных MySQL, а [табличную функцию remoteSecure](/docs/ru/reference/functions/table-functions/remote)
— для записи данных в целевую таблицу в вашем сервисе ClickHouse Cloud.

<Image img="https://mintcdn.com/private-7c7dfe99/B2SPNiDHMxYV1gTC/images/integrations/migration/ch-local-03.webp?fit=max&auto=format&n=B2SPNiDHMxYV1gTC&q=85&s=c4a36de8d8f1c27b2a3ebbec453ef9b3" size="lg" alt="Миграция с самоуправляемого ClickHouse" width="2048" height="1160" data-path="images/integrations/migration/ch-local-03.webp" />

<div id="on-the-destination-clickhouse-cloud-service">
  ### На целевом сервисе ClickHouse Cloud:
</div>

<div id="create-the-destination-database">
  #### Создайте базу данных в пункте назначения:
</div>

```sql theme={null}
  CREATE DATABASE db
```

<div id="create-a-destination-table-that-has-a-schema-equivalent-to-the-mysql-table">
  #### Создайте целевую таблицу со схемой, соответствующей таблице MySQL:
</div>

```sql theme={null}
  CREATE TABLE db.table ...
```

<Note>
  Схема целевой таблицы ClickHouse Cloud и схема исходной таблицы MySQL должны быть согласованы (имена и порядок столбцов должны совпадать, а типы данных столбцов — быть совместимыми).
</Note>

<div id="on-the-clickhouse-local-host-machine">
  ### На хост-машине с clickhouse-local:
</div>

<div id="run-clickhouse-local-with-the-migration-query">
  #### Запустите clickhouse-local с запросом для миграции:
</div>

```sql theme={null}
  ./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
```

<Note>
  На хост-машине `clickhouse-local` данные не хранятся локально. Вместо этого они считываются из исходной таблицы MySQL
  и сразу записываются в целевую таблицу сервиса ClickHouse Cloud.
</Note>
