---
title: 'Миграция баз данных ClickHouse® в облачные базы данных ClickHouse®'
sidebar_label: 'Миграция ClickHouse® в облачные базы данных ClickHouse®'
sidebar_position: 10
description: 'Как перенести базы данных ClickHouse® в облачные базы данных ClickHouse®'
---

import Formbricks from '@theme/MDXComponents/Formbricks';

# Миграция баз данных ClickHouse® в облачные базы данных ClickHouse®

Вы можете перенести базы данных из своего ClickHouse® в [облачную базу данных ClickHouse®](/managed-databases/clickhouse/about-clickhouse.mdx) с помощью функции `remoteSecure` или `remote`.
Эти функции используются в запросах `SELECT` и `INSERT` для доступа к удаленным серверам ClickHouse®, что позволяет переносить таблицы так же просто, как выполнить запрос `INSERT INTO` со встроенным `SELECT`.

Мы рекомендуем использовать функцию `remoteSecure`, так как она поддерживает защищенное соединение в отличие от `remote`.

Подробнее о функциях в инструкции [remote, remoteSecure](https://clickhouse.com/docs/ru/reference/functions/table-functions/remote) документации ClickHouse®.

## Что нужно для миграции \{#what-is-required}

* исходная база данных ClickHouse®, доступная из интернета по публичному IP-адресу или DNS-адресу;
* [облачная база данных ClickHouse®](/managed-databases/clickhouse/about-clickhouse.mdx) с [публичным IP-адресом](/managed-databases/clickhouse/public-ip.mdx) для доступа в интернет и из интернета.

## Шаги миграции \{#migration-steps}

1. [Подготовьте исходный кластер ClickHouse®](#prepare-source-cluster).

2. [Подготовьте целевой кластер ClickHouse®](#prepare-target-cluster).

3. [Перенесите данные](#transfer-data).

### 1. Подготовить исходный кластер ClickHouse® \{#prepare-source-cluster}

1. Создайте пользователя, который будет читать исходную таблицу:

   ```sql
   CREATE USER <user_name>
   IDENTIFIED WITH SHA256_PASSWORD BY '<password>'
   SETTINGS readonly = 1;
   ```

   Укажите:

   * `<user_name>` — имя пользователя;
   * `<password>` — пароль пользователя.

2. Выдайте пользователю права на чтения исходной таблицы:

   ```sql
   GRANT SELECT ON <database_name>.<table_name> TO <user_name>;
   ```

   Укажите:

   * `<database_name>` — имя базы данных;
   * `<table_name>` — имя таблицы;
   * `<user_name>` — имя пользователя.

3. Скопируйте определение исходной таблицы:

   ```sql
   SELECT create_table_query
   FROM system.tables
   WHERE database = '<database_name>' AND table = '<table_name>'
   ```

   Укажите:

   * `<database_name>` — имя базы данных;
   * `<table_name>` — имя таблицы.

### 2. Подготовить целевой кластер ClickHouse® \{#prepare-target-cluster}

1. [Создайте кластер ClickHouse®](/managed-databases/clickhouse/create-cluster.mdx).

2. Чтобы у кластера был доступ в интернет и из интернета, [подключите публичный IP-адрес](/managed-databases/clickhouse/public-ip.mdx#connect-public-ip-in-existing-cluster).

3. Создайте целевую базу данных:

   ```sql
   CREATE DATABASE <database_name>;
   ```

   Укажите `<database_name>` — имя базы данных.

4. Создайте таблицу назначения с помощью оператора `CREATE TABLE` исходной таблицы, который вы скопировали при [подготовке исходного кластера ClickHouse®](#prepare-source-cluster) на шаге 3.
   При выполнении оператора `CREATE` измените `ENGINE` на `ReplicatedMergeTree` без указания параметров.
   Секции `ORDER BY`, `PRIMARY KEY`, `PARTITION BY`, `SAMPLE BY`, `TTL` и `SETTINGS` оставьте без изменений.

   ```sql
   CREATE TABLE <database_name>.<table_name> ...
   ```

   Укажите:

   * `<database_name>` — имя базы данных;
   * `<table_name>` — имя таблицы.

### 3. Перенести данные \{#transfer-data}

:::info

Для переноса данных мы рекомендуем использовать функцию `remoteSecure`, так как она поддерживает защищенное соединение в отличие от `remote`.
Если на исходном кластере не настроен SSL, используйте функцию `remote`.

:::

На целевом кластере перенесите данные из исходного с помощью функции `remoteSecure`:

```sql
INSERT INTO <database_name>.<table_name> SELECT * FROM remoteSecure('<host>', <database_name>, <table_name>, '<user_name>', '<password>')
```

Укажите:

* `<database_name>` — имя базы данных;
* `<table_name>` — имя таблицы;
* `<host>` — IP-адрес или DNS-адрес исходного кластера;
* `<user_name>` — имя пользователя;
* `<password>` — пароль пользователя.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc. https://clickhouse.com.

<Formbricks />
