Миграция между самоуправляемым ClickHouse и ClickHouse Cloud

Этот гид покажет, как мигрировать с самоуправляемого сервера ClickHouse в ClickHouse Cloud, а также как мигрировать между сервисами ClickHouse Cloud. Функция remoteSecure
используется в запросах SELECT
и INSERT
, чтобы разрешить доступ к удалённым серверам ClickHouse, что делает миграцию таблиц такой простой, как написание запроса INSERT INTO
с встроенным SELECT
.
Миграция из самоуправляемого ClickHouse в ClickHouse Cloud

Независимо от того, разбита ли ваша исходная таблица на шард и/или реплицирована, в ClickHouse Cloud вы просто создаете целевую таблицу (вы можете не указывать параметр Engine для этой таблицы, она автоматически станет таблицей ReplicatedMergeTree), и ClickHouse Cloud автоматически позаботится о вертикальном и горизонтальном масштабировании. Вам не нужно беспокоиться о том, как реплицировать и шардировать таблицу.
В этом примере самоуправляемый сервер ClickHouse является источником, а сервис ClickHouse Cloud — назначением.
Обзор
Процесс заключается в следующем:
- Добавьте пользователя с правами только на чтение к исходному сервису
- Дублируйте структуру исходной таблицы на целевом сервисе
- Перенесите данные из источника в назначение или отправьте данные из источника, в зависимости от доступности сети исходника
- Удалите исходный сервер из списка доступа IP на целевом (если применимо)
- Удалите пользователя с правами только на чтение из исходного сервиса
Миграция таблиц из одной системы в другую:
Этот пример демонстрирует миграцию одной таблицы с самоуправляемого сервера ClickHouse в ClickHouse Cloud.
На исходной системе ClickHouse (система, которая в данный момент размещает данные)
- Добавьте пользователя с правами только на чтение, который может читать исходную таблицу (
db.table
в этом примере)
- Скопируйте определение таблицы
На целевой системе ClickHouse Cloud:
- Создайте целевую базу данных:
- Используя оператор CREATE TABLE из источника, создайте целевую таблицу.
Измените ENGINE на ReplicatedMergeTree без каких-либо параметров, когда вы выполняете оператор CREATE. ClickHouse Cloud всегда реплицирует таблицы и предоставляет правильные параметры. Однако сохраните условия ORDER BY
, PRIMARY KEY
, PARTITION BY
, SAMPLE BY
, TTL
и SETTINGS
.
- Используйте функцию
remoteSecure
, чтобы получить данные из самоуправляемого источника

Если исходная система недоступна из внешних сетей, вы можете отправить данные, а не извлекать их, поскольку функция remoteSecure
работает для обеих операций выборки и вставки. Смотрите следующий вариант.
- Используйте функцию
remoteSecure
, чтобы отправить данные в сервис ClickHouse Cloud

Чтобы функция remoteSecure
могла подключиться к вашему сервису ClickHouse Cloud, IP-адрес удалённой системы должен быть разрешен в списке доступа IP. Раскройте Управление списком доступа IP ниже этой подсказки для получения дополнительной информации.
Управление списком доступа по IP
Из списка ваших услуг ClickHouse Cloud выберите ту, с которой вы будете работать, и перейдите в Настройки. Если список доступа по IP не содержит IP-адрес или диапазон удаленной системы, который должен подключиться к вашему сервису ClickHouse Cloud, вы можете решить эту проблему с помощью Добавить IP:

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

Миграция между сервисами ClickHouse Cloud

Некоторые примеры использования для миграции данных между сервисами ClickHouse Cloud:
- Миграция данных из восстановленной резервной копии
- Копирование данных из сервиса разработки в сервис предварительного просмотра (или из предварительного просмотра в продакшн)
В этом примере есть два сервиса ClickHouse Cloud, которые будут называться источником и назначением. Данные будут извлекаться из источника в назначение. Хотя вы можете отправить данные, если хотите, выбран метод извлечения, так как он использует пользователя с правами только на чтение.

Миграция состоит из нескольких этапов:
- Определите один сервис ClickHouse Cloud в качестве источника, а другой — в качестве назначения
- Добавьте пользователя с правами только на чтение к исходному сервису
- Дублируйте структуру исходной таблицы на целевом сервисе
- Временно разрешите доступ IP к исходному сервису
- Скопируйте данные из источника в назначение
- Восстановите список доступа IP на целевом сервисе
- Удалите пользователя с правами только на чтение из исходного сервиса
Добавьте пользователя с правами только на чтение к исходному сервису
-
Добавьте пользователя с правами только на чтение, который может читать исходную таблицу (
db.table
в этом примере) -
Скопируйте определение таблицы
Дублируйте структуру таблицы на целевом сервисе
На целевом сервисе создайте базу данных, если она ещё не существует:
-
Создайте целевую базу данных:
-
Используя оператор CREATE TABLE из источника, создайте целевую таблицу.
На целевом сервисе создайте таблицу, используя вывод команды
select create_table_query...
из источника:
Разрешите удаленный доступ к исходному сервису
Для того чтобы извлечь данные из источника в назначение, исходный сервис должен разрешать подключения. Временно отключите функциональность "Список доступа IP" на исходном сервисе.
Если вы планируете продолжать использовать исходный сервис ClickHouse Cloud, то экспортируйте существующий список доступа IP в JSON-файл перед переключением на разрешение доступа отовсюду; это позволит вам импортировать список доступа после миграции данных.
Измените список разрешённых адресов и временно разрешите доступ от везде. Смотрите документацию Список доступа IP для подробной информации.
Скопируйте данные из источника в назначение
-
Используйте функцию
remoteSecure
, чтобы извлечь данные из сервиса ClickHouse Cloud источника Подключитесь к целевому сервису. Выполните эту команду на целевом сервисе ClickHouse Cloud: -
Проверьте данные на целевом сервисе
Восстановите список доступа IP на исходном
Если вы ранее экспортировали список доступа, вы можете повторно импортировать его с помощью Поделиться, в противном случае снова добавьте ваши записи в список доступа.
Удалите пользователя с правами только на чтение exporter
- Переключите список доступа IP сервиса, чтобы ограничить доступ