184 похожих чатов

Коллеги добрый день. не подскажете доку с настройкой репликации в

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

21 ответов

20 просмотров

Добрый день. Безболезненно наверное нет, нужно менять движок таблиц на репликейтед

- поднять zookeeper или clickhouse-keeper (он пока экспериментальный) https://www.howtoforge.com/tutorial/how-to-install-apache-zookeeper-on-ubuntu-2004/ - прописать его на обоих нодах в секции конфига <yandex><zookeeper> /etc/clickhouse/config.d/zookeeper.xml https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings_zookeeper - прописать <remote_servers> на обоих нодах тоже через config.d https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-settings-remote-servers см. пример кластера тут https://clickhouse.tech/docs/en/engines/table-engines/special/distributed/ это нужно для того когда появится ВТОРОЙ шард - прописать <yandex><macros> правильно на обоих нодах то же через config.d https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#macros см. как макросы прописываются в доке https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/ - текущие таблицы для одного сервере должны быть с Engine=MergeTree и надо будет конвертировать их в ReplicatedMergeTree на обоих репликах новые таблицы ReplicatedMergeTree надо будет создать РУКАМИ... не забыть правильно макросы задать в параметрах ReplicatedMergeTree https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-converting-mergetree-to-replicated - подождать пока данные реплицируются - создать какой то load balancer например chproxy или просто nginx перед этими двумя нодами upstream + proxy_pass - когда потребуется поднять второй шард прочитать еще раз что такое Engine=distributed - установить две новые ноды, прописать на двух новых нодах правильно macros - создать пустые ReplicatedMergeTree таблицы -добавить новый шард из двух реплик на всех 4 нодах в remote_servers - не забыть про zookeeper

в общем это не как MySQL ;) xtrabackup —master-info; который сделает CHANGE MASTER TO ... START MYSQL SLAVE; и алга =)

SvPupok- Автор вопроса
Slach [altinity]
в общем это не как MySQL ;) xtrabackup —master-inf...

хм, у меня больше половины таблиц в collapsingmergetree, прям стало любопытно, как оно переживет

SvPupok
хм, у меня больше половины таблиц в collapsingmerg...

разницы между CollapsingMergeTree и обычным MergeTree нет, они как были так и осались это ЛОКАЛЬНЫЕ Таблицы в рамках одного сервера они не реплицируемы чтобы были реплицируемые надо чтобы серверов было УЖЕ ДВА и чтобы был ZK и надо конвертировать в ReplicatedCollapsingMergeTree вы видимо вообще не понимаете как репликация в clickhouse Работает ...

SvPupok- Автор вопроса
Slach [altinity]
разницы между CollapsingMergeTree и обычным MergeT...

поэтому и спрашиваю) у меня просто бэк в postgres и oracle) пока читаю официальную документацию, попробую на тесте поэксперементировать

SvPupok
поэтому и спрашиваю) у меня просто бэк в postgres ...

ок. тогда попробуйте прочитать несколько раз https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replication/

Slach [altinity]
- поднять zookeeper или clickhouse-keeper (он пока...

Спасибо! А не подскажите, если общий размер базы в КХ порядка 5 Тб и я хочу сделать одну реплику, то, поднимая дополнительные zookeeper на других серверах как понять сколько под него оперативы оптимально будет?

Alexqrid
Спасибо! А не подскажите, если общий размер базы в...

"поднимая дополнительные zookeeper" не очень понятно что имеете ввиду данные в zookeeper не шардятся все инстансы зукипер имеют одинаковые данные и синхронизируют изменения между собой объем оперативы ZK зависит от интенсивности INSERT вставок в clickhouse... ZK используется только для передачи метаданных новых партов и регистрации реплик ну и для Distributed DDL ( запросы которые модицируют структуру и выполнятся на ON CLUSTER ) Сами данные по http забираются репликой самостоятельно с той реплики которая зарегистрировала новый кусок данных (data part, см. system.parts в документации) 5 Терабайт, это прям вам надо отдельно скопировать и потом уже реплику аттачить...

Slach [altinity]
"поднимая дополнительные zookeeper" не очень понят...

>5 Терабайт, это прям вам надо отдельно скопировать и потом уже реплику аттачить... вот это меня всегда интересовало, если есть клонированные данные на новой ноде, можно ли приаттачить реплику. сработает ли подобный процесс? - создать replicated MT на новой ноде - system stop replica - положить файлы в детачед и аттачнуть - start repiica?

Slach [altinity]
"поднимая дополнительные zookeeper" не очень понят...

Понял, спасибо, а про доп. ZK имел в виду,что везде же советуют минимум 3 ZK ноды использовать.

【D】【J】
>5 Терабайт, это прям вам надо отдельно скопироват...

по идее да, но фиг знает как на практике я лично 5Tb Не пробовал =) придет denny и скажет что я ерунду говорю

Alexqrid
Понял, спасибо, а про доп. ZK имел в виду,что везд...

ок, это должны быть 3 одинаковые ноды связанные в ZK кластер и еще они должны быть отдельно от clickhouse чтобы не бороться с ним за диск и CPU потому что ZK при интенсивной вставке (в смысле кол-во запросов INSERT а не строк) вполне себе способен выжирать CPU и диск

Slach [altinity]
по идее да, но фиг знает как на практике я лично 5...

да, ждем. у меня вопрос скорее по поводу того что когда диски на массиве, там можно клонировать и благодаря дедупу, это будет в делом секунд.

Slach [altinity]
- поднять zookeeper или clickhouse-keeper (он пока...

Сделал всё по этим гайдам, но на обоих серверах КХ не запускается и пишет следующую ошибку в лог: <Error> Application: Not found: remote_servers.logger.shard.replica.host

Alexqrid
Сделал всё по этим гайдам, но на обоих серверах КХ...

remote_servers покажите из /var/lib/clickhouse/preprocessed_configs/config.xml?

Slach [altinity]
remote_servers покажите из /var/lib/clickhouse/pre...

Как можно автоматически настроить конфиги, если добавил ещё 2 сервера к примеру?

Slach [altinity]
remote_servers покажите из /var/lib/clickhouse/pre...

на мастере: <remote_servers> <logger> <shard> <replica> <internal_replication>true</internal_replication> <port>9000</port> <user>мой юзер</user> <password>мой пароль</password> </replica> <replica> <host>айпи слейв сервера тут</host> <port>9440</port> <user>мой юзер</user> <password>мой пароль</password> <secure>1</secure> </replica> </shard> </logger> на слейве: <remote_servers> <logger> <shard> <replica> <internal_replication>true</internal_replication> <port>9000</port> <user>мой юзер</user> <password>мой пароль</password> </replica> <replica> <host>айпи мастер сервера тут</host> <port>9440</port> <user>мой юзер</user> <password>мой пароль</password> <secure>1</secure> </replica> </shard> </logger>

Alexqrid
на мастере: <remote_servers> <logger> ...

везде host нужен внутри <replica>

Slach [altinity]
везде host нужен внутри <replica>

шел 13ый час моих тщетных попыток и наконец заработало. Спасибо!)

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта