Недавно мы начали использовать Yandex ClickHouse для нашей базы данных, и я работаю над тем, чтобы выяснить, как лучше всего сделать резервную копию наших данных. Кажется, есть два способа сделать это.
ИЗМЕНИТЬ ТАБЛИЦУ ... ЗАМОРОЗИТЬ РАЗДЕЛ
В ALTER TABLE ... FREEZE PARTITION
команда просто создает локальный снимок раздела. Мне пришлось бы написать сценарий, который обнаруживает все разделы в каждой таблице, а затем выдавать соответствующую команду.
Чтобы получить резервные копии из системы, я считаю, что мне придется создать резервную копию shadow
каталог на каждом сервере и сохраните эту резервную копию в другом месте (например, S3 или что-то в этом роде).
Как мне сохранить shadow
каталог чистый? Можно ли удалить зависания?
Вывод данных
Другой способ, который я видел для резервного копирования данных, - это просто выгружать их в файлы, как предлагает эта страница.
https://github.com/resure/scpnet/wiki/ClickHouse-backup
Мне пришлось бы написать сценарий, который обнаруживает все таблицы в каждой базе данных, а они сбрасывают все данные в файл. Это во многом напоминает мне использование mysqldump для резервного копирования баз данных в MySQL, но без возможности просто выгрузить все одной командой.
Лично я склоняюсь к этому решению, так как мне кажется, что его намного проще писать и поддерживать, но мне действительно любопытно узнать, что делают другие.