Перейти к основному содержимому
Перейти к основному содержимому

Миграция между самоуправляемым 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 — назначением.

Обзор

Процесс заключается в следующем:

  1. Добавьте пользователя с правами только на чтение к исходному сервису
  2. Дублируйте структуру исходной таблицы на целевом сервисе
  3. Перенесите данные из источника в назначение или отправьте данные из источника, в зависимости от доступности сети исходника
  4. Удалите исходный сервер из списка доступа IP на целевом (если применимо)
  5. Удалите пользователя с правами только на чтение из исходного сервиса

Миграция таблиц из одной системы в другую:

Этот пример демонстрирует миграцию одной таблицы с самоуправляемого сервера 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
Добавьте удалённую систему в список доступа IP вашего сервиса 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, которые будут называться источником и назначением. Данные будут извлекаться из источника в назначение. Хотя вы можете отправить данные, если хотите, выбран метод извлечения, так как он использует пользователя с правами только на чтение.

Миграция состоит из нескольких этапов:

  1. Определите один сервис ClickHouse Cloud в качестве источника, а другой — в качестве назначения
  2. Добавьте пользователя с правами только на чтение к исходному сервису
  3. Дублируйте структуру исходной таблицы на целевом сервисе
  4. Временно разрешите доступ IP к исходному сервису
  5. Скопируйте данные из источника в назначение
  6. Восстановите список доступа IP на целевом сервисе
  7. Удалите пользователя с правами только на чтение из исходного сервиса

Добавьте пользователя с правами только на чтение к исходному сервису

  • Добавьте пользователя с правами только на чтение, который может читать исходную таблицу (db.table в этом примере)

  • Скопируйте определение таблицы

Дублируйте структуру таблицы на целевом сервисе

На целевом сервисе создайте базу данных, если она ещё не существует:

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

  • Используя оператор CREATE TABLE из источника, создайте целевую таблицу.

    На целевом сервисе создайте таблицу, используя вывод команды select create_table_query... из источника:

Разрешите удаленный доступ к исходному сервису

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

подсказка

Если вы планируете продолжать использовать исходный сервис ClickHouse Cloud, то экспортируйте существующий список доступа IP в JSON-файл перед переключением на разрешение доступа отовсюду; это позволит вам импортировать список доступа после миграции данных.

Измените список разрешённых адресов и временно разрешите доступ от везде. Смотрите документацию Список доступа IP для подробной информации.

Скопируйте данные из источника в назначение

  • Используйте функцию remoteSecure, чтобы извлечь данные из сервиса ClickHouse Cloud источника Подключитесь к целевому сервису. Выполните эту команду на целевом сервисе ClickHouse Cloud:

  • Проверьте данные на целевом сервисе

Восстановите список доступа IP на исходном

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

Удалите пользователя с правами только на чтение exporter

  • Переключите список доступа IP сервиса, чтобы ограничить доступ