бэкапе методом фриза партиций. Проверить, что в этот момент не идет вставка в партицию? Проверять processlist на предмет Insert и system.replication_queue'?
а зачем вам проверять что идет вставка в партицию? freeze создает hardlink только на вставленные парты в партиции на момент старта freeze все что попадет позже просто не войдет в бекап... чего именно вы хотите добиться такой проверкой?
у нас есть большая таблица Insert Only с партами по неделе и раз в неделю хочется ее бэкапить и быть уверенным, что бэкап будет консистентным и не делался в момент, когда эту партицию перенаполняли из источника или был большой лаг на реплике или другие непредвиденные сценарии.
Вы не можете перенаполнять эту партицию в другую таблицу и потом просто делать ALTER TABLE REPLACE PARTITION ?
в таком случае не нужно бэкапить текущую исходную таблицу. А в скрипте хочется все предусмотреть и если партиция "занята", то отложить выполнение, например, на сутки
по вашему сообщению не очень понятно вы различаете парты и партиции? чтобы избежать большого лага по реплике, в clickhouse-backup делается для Replicated таблиц SYSTEM SYNC REPLICA с настраиваемым timeout ну и вы никак не можете избежать ситуации когда в эту эту таблицу будет вставка после начала FREEZE ... поэтому непонятно все таки чего именно вы пытаетесь избежать понятие "консистентности" в clickhouse eventually (консистеность при отсутвии вставок когда нибудь будет достигнута) транзакций нет... только "атомарные" вставки и "аторманые" мержи в бекграунде...
Обсуждают сегодня