Вы можете использовать команды BACKUP и RESTORE, чтобы экспортировать резервные копии в соответствующие бакеты хранилища,
а также создавать резервные копии и восстанавливать их через интерфейс.
В этом руководстве приведены команды для всех трех CSP.
Требования
Для экспорта/восстановления резервных копий в собственный бакет хранилища облачного провайдера вам понадобятся следующие данные:
- Конечная точка AWS S3 в формате:
s3://<bucket_name>.s3.amazonaws.com/<optional_directory>Например:s3://testchbackups.s3.amazonaws.com/Где:testchbackups— имя S3 бакета, в который экспортируются резервные копии.backups— необязательный подкаталог.
- Ключ доступа AWS и секрет. Также поддерживается аутентификация на основе AWS Role, которую можно использовать вместо ключа доступа AWS и секрета, как описано в разделе выше.
- Конечная точка GCS в формате:
https://storage.googleapis.com/<bucket_name>/ - Ключ доступа HMAC и секрет HMAC.
- Строка подключения к хранилищу Azure.
- Имя контейнера Azure в учетной записи хранения.
- Blob-объект Azure в контейнере.
Резервное копирование / восстановление конкретной БД
Ниже показано резервное копирование и восстановление одной базы данных. См. сводку команд резервного копирования с командами полного резервного копирования и восстановления.
AWS S3
BACKUP DATABASE test_backups
TO S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)Где uuid — уникальный идентификатор, используемый для различения наборов резервных копий.
RESTORE DATABASE test_backups
FROM S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)Google Cloud Storage (GCS)
BACKUP DATABASE test_backups
TO S3(
'https://storage.googleapis.com/<bucket>/<uuid>',
'<hmac-key>',
'<hmac-secret>'
)Где uuid — уникальный идентификатор, используемый для обозначения резервной копии.
RESTORE DATABASE test_backups
FROM S3(
'https://storage.googleapis.com/<bucket>/<uuid>',
'<hmac-key>',
'<hmac-secret>'
)Azure Blob Storage
BACKUP DATABASE test_backups
TO AzureBlobStorage(
'<AzureBlobStorage endpoint connection string>',
'<container>',
'<blob>/<>'
)Где uuid — уникальный идентификатор, используемый для обозначения резервной копии.
RESTORE DATABASE test_backups
FROM AzureBlobStorage(
'<AzureBlobStorage endpoint connection string>',
'<container>',
'<blob>/<uuid>'
)Резервное копирование / восстановление всего сервиса
Чтобы создать резервную копию всего сервиса, используйте приведенные ниже команды. Эта резервная копия будет содержать все пользовательские и системные данные созданных сущностей, профилей настроек, политик строк, квот и функций. Ниже приведены примеры для AWS S3. Эти команды также можно использовать для GCS и Azure Blob Storage, применяя описанный выше синтаксис.
BACKUP
TABLE system.users,
TABLE system.roles,
TABLE system.settings_profiles,
TABLE system.row_policies,
TABLE system.quotas,
TABLE system.functions,
ALL EXCEPT DATABASES INFORMATION_SCHEMA, information_schema, system
TO S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)где uuid — уникальный идентификатор резервной копии.
RESTORE ALL
FROM S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)
SETTINGS restore_access_entities_with_current_grants = 1Настройка restore_access_entities_with_current_grants доступна начиная с версии ClickHouse Cloud 26.4 (сборка 26.4.1.1942 или более поздняя).
Проверить версию, на которой работает ваш сервис, можно с помощью:
SELECT version()Когда включена настройка restore_access_entities_with_current_grants, привилегии восстановленных пользователей и ролей ограничиваются теми, которые пользователь, выполняющий восстановление, может предоставить
(та же семантика, что и у GRANT CURRENT GRANTS), вместо ошибки выполнения RESTORE
с ACCESS_DENIED, если резервная копия содержит больше разрешений, чем пользователь, выполняющий восстановление, может предоставить.
В версиях раньше 26.4 не указывайте эту настройку.
FAQ
Что происходит с резервными копиями в моем облачном объектном хранилище? ClickHouse удаляет их со временем?
Мы даем возможность экспортировать резервные копии в ваш бакет, однако после записи не очищаем и не удаляем их. Вы сами управляете жизненным циклом резервных копий в своем бакете: удаляете, архивируете или при необходимости переносите их в более дешевое хранилище, чтобы снизить общую стоимость.
Что произойдет с процессом восстановления, если я перемещу часть существующих резервных копий в другое место?
Если какие-либо резервные копии будут перемещены в другое место, команду восстановления нужно будет обновить, чтобы она указывала на новое место хранения резервных копий.
Что будет, если я изменю учетные данные для доступа к объектному хранилищу?
Вам потребуется обновить измененные учетные данные в интерфейсе, чтобы резервные копии снова начали успешно создаваться.
Что будет, если я изменю место экспорта внешних резервных копий?
Вам потребуется обновить новое местоположение в интерфейсе, и резервные копии начнут создаваться в новом месте. Старые резервные копии останутся в исходном месте.
Как отключить внешние резервные копии для сервиса, в котором они включены?
Чтобы отключить внешние резервные копии для сервиса, перейдите на экран настроек сервиса и нажмите Change external backup. На следующем экране нажмите Remove setup, чтобы отключить внешние резервные копии для этого сервиса.