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

Подскажите, неужели нельзя сделать аналог master-slave с clickhouse? Просто без

zookeeper'a... кластер не нужен, просто суть slave'a для того что бы некие люди, без прав на запись, могли читать данные (ну грубо говоря это регулятор, которому доступ в прод точно не стоит давать).

Сейчас стоит вопрос (от безысходности) всё таки поднять cluster с zookeeper'ом...

Думали использовать clickhouse-copier, но он вроде как дропает таблички, не умеет инкрементить (ну как в случае с Mysql бин логами), и вроде как сделан просто для разовой миграции данных...

Как быть? :)

14 ответов

28 просмотров

сделать простой distributed - это всего несколько строк в конфиге. Подключаете так slave на master, и уже на мастере делаете MV, которое копирует что вам надо (можно и не все) в табличку, которая подключена как remote, а физически живет на slave

SM- Автор вопроса
Boris
сделать простой distributed - это всего несколько ...

Спасибо 🙏 Получается что мы на мастере (проде), в конфиге прописываем несколько строк в блоке <remote_servers> и данные просто будут пересылаться аналогично FDW (Foreign Data Wrappers), просто в другую базу. Но ведь поидее он не проверяет целостность данных... Что например будет если сервак на другой стороне (slave) проглючит, временно отстанет.. Это больше похоже на sharding? Аналог proxy_pass в nginx только умней :)

SM
Спасибо 🙏 Получается что мы на мастере (проде), в ...

не только remotes, но и MV, без него ничего само собой копироваться не будет. да, это похоже на sharding. если отвалится remote, то поведение будет непредсказуемо. но вам ведь для регулятора это не так страшно? Надежная репликация - это zookeeper или грядущий clickhouse-keeper.

SM- Автор вопроса
Boris
не только remotes, но и MV, без него ничего само с...

Ну поидее они требуют быстрой синхронизации данных.. Но с другой стороны если в мониторинге заметить разрыв, то всегда можно починить... Я понял, хороший вариант на самом деле - сейчас поизучаем. Просто предоставляя ноду из cluster'a это больше рисков для бизнеса и в таком роде... Но спасибо большое!

лог инсертов пишется в зукипер, реплики через ЗК подписываются на лог. зукипер не нужен уже cat /etc/clickhouse-server/conf.d/zookeeper.xml <?xml version="1.0" ?> <yandex> <keeper_server> <tcp_port>2181</tcp_port> <server_id>1</server_id> <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path> <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path> <coordination_settings> <operation_timeout_ms>10000</operation_timeout_ms> <session_timeout_ms>30000</session_timeout_ms> <raft_logs_level>trace</raft_logs_level> </coordination_settings> <raft_configuration> <server> <id>1</id> <hostname>localhost</hostname> <port>9444</port> </server> </raft_configuration> </keeper_server> <zookeeper> <node> <host>localhost</host> <port>2181</port> </node> </zookeeper> <distributed_ddl> <path>/clickhouse/oint/task_queue/ddl</path> </distributed_ddl> </yandex>

SM- Автор вопроса
Denny [Altinity]
лог инсертов пишется в зукипер, реплики через ЗК п...

А если некоторые таблицы используют ReplacingMergeTree - это не повлияет?

Andrey Dudin
На сколько оно prod ready?

сложно сказать, наверное 8 из 10. Нету известных багов, оно проходит все тесты, у меня на стейдже работает. В такой простой задаче из одной пишущей ноды, да еще с одной нодой кипера должно работать. Если надо быстро и диск сильно нагружен, то естественно на отдельном ssd <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path> <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>

Denny [Altinity]
лог инсертов пишется в зукипер, реплики через ЗК п...

кстати сколько минимум нодов надо чтобы housekeeper норм работал и фейловерился, так же 3? и как он реагирует на сплит-нетворк когда число нодов четное?

【D】【J】
кстати сколько минимум нодов надо чтобы housekeep...

да 3. про четное не знаю, кажется рафту плевать. Я уговариваю чтобы сделали чтобы на двух нодах работало (без ha понятно)

Denny [Altinity]
да 3. про четное не знаю, кажется рафту плевать. ...

без ХА, с уходом в оффлайн до ручного intervention?

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта