Categories: Скрипты

Скрипт на bash для копирования данных с одного кластера Clickhouse на другой

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

Мы будем выполнять задачу с помощью скрипта bash.

Как будет работать скрипт

Запускать данных сценарий необходимо на одной из нод кластера, куда будут импортироваться данные. Он будет выполнять удаленное подключения к источнику данных, читать список таблиц и создавать их на целевом кластере, а после переносить данные с помощью запросов INSERT + SELECT * FROM remote() .

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

Условия:

  • Использование таблиц типа Distributed. Именно они будет использоваться для перекачки данных.
  • В момент работы скрипта необходимо, чтобы с данными не происходило никаких изменений. Это важно для сохранения целостности информации.
  • Оба кластера должны быть настроены одинаково. А именно, иметь одинаковые названия, иметь то же число шард и реплик. Это важно, так как подразумевается использование таблиц типа Distributed, в которых хранятся настройки размещения данных между участниками кластера. С модификацией данных параметров вы можете изменить под себя перенос данных.

Предварительно необходимо:

  • Выбрать два сервера. Один на стороне кластера источника данных, второй — целевого, куда будем отправлять данные. Назовем их сервер-источник и сервер-цель.
  • С сервера-цели необходимо обеспечить сетевое подключение для клиента Clickhouse к серверу-источнику. При необходимости, создать учетную запись с соответствующими правами. Ссылки на дополнительные материалы приведены ниже.
  • На самом сервере-целе, где будет запускаться скрипт, настроить возможность беспарольного подключения к локальному серверу Clickhouse (поведение по умолчанию для системной записи root).

Ниже данные вопросы рассмотрим подробнее.

Пример скрипта

Напомним, что скрипт должен запускаться на сервере, куда будут импортироваться данные. Поэтому хорошей идеей будет создать сам скрипт на нем.

Создадим каталог, где будем хранить скрипт:

mkdir /scripts

Создадим bash-сценарий для копирования данных Clickhiuse:

vi /scripts/clickhouse-import-data.sh

  1. #!/bin/bash
  2. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  3. while getopts :d::h::p::u::c: arg
  4. do
  5. case ${arg} in
  6. d)
  7. db=»${OPTARG}»
  8. ;;
  9. h)
  10. db_host=»${OPTARG}»
  11. ;;
  12. p)
  13. db_port=»${OPTARG}»
  14. ;;
  15. u)
  16. db_user=»${OPTARG}»
  17. ;;
  18. c)
  19. db_cluster=»${OPTARG}»
  20. ;;
  21. 🙂
  22. echo -e «
admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

3 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

3 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

3 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

3 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

3 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

3 месяца ago