Резервное копирование¶
Данные для резервного копирования¶
При выполнении процедуры резервного копирования AW необходимо включить в состав резервной копии следующие данные:
- Файлы конфигурации (пути к файлам и директориям указаны относительно директории с установленной AW, по умолчанию /opt/aw/app):
- docker - директория, cодержащая файлы настроек для различных сервисов из состава AW, таких как ClickHouse, RabbitMQ, PostgreSQL и др.;
- .env - файл с настройками AW;
- docker-compose.yml и docker-compose.prod.yml - файлы со списком сервисов для запуска.
- База данных AW:
- db/postgres - файлы БД, содержащие данные об объектах, созданных в процессе работы с AW (пользователи, источники, модели, информационные панели и т.п.).
- Файловые источники, загруженные драйвера, изображения и т.п.:
- file_storage/api/
- file_storage/minio
- file_storage/jars
- file_storage/file_puller
Резервное копирование файлов конфигурации¶
Для выполнения операции резервного копирования файлов конфигурации AW выполните следующие действия:
- выполните подключение к серверу приложения по SSH;
- перейдите в рабочую директорию приложения (по умолчанию - /opt/aw/app ):
выполните резервное копирование файлов - конфигурации:
tar -czf aw-conf-$(date "+%Y-%m-%d").tar.gz ./.env ./docker ./docker-compose.yml ./docker-compose.prod.yml
В результате выполнения команды будет создан архив с текущей датой в имени, например:
Переместите архив в резервное хранилище.
Резервное копирование БД AW¶
Файловое копирование БД AW (требует остановки сервиса)¶
Для резервного копирования БД Системы выполните следующие действия:
- выполните подключение к серверу приложения по SSH;
- перейдите в рабочую директорию приложения ( по умолчанию - /opt/aw/app ):
- остановите приложение ( это необходимо, чтобы обеспечить консистентность файлов БД ):
выполните резервное копирование файлов БД:
В результате выполнения команды будет создан архив с текущей датой в имени, например:
- запустите приложение:
Переместите архив в резервное хранилище.
SQL копирование БД AW (НЕ требует остановки сервиса)¶
Для резервного копирования БД Системы выполните следующие действия:
- выполните подключение к серверу приложения по SSH;
- перейдите в рабочую директорию приложения ( по умолчанию - /opt/aw/app ):
- выполните резервное копирование БД:
docker compose exec db pg_dump -d workspace -U analytic -W | gzip - -c > ./aw-db-$(date "+%Y-%m-%d").sql.gz
В результате выполнения команды будет создан архив с текущей датой в имени, например:
Переместите архив в резервное хранилище.
Резервное копирование ClickHouse (без остановки сервера)¶
Резервное копирование ClickHouse выполняется с помощью утилиты clickhouse-backup.
- Выполните установку clikсhouse-backup на тот сервер на котором запущена БД ClickHouse
- Если порты cliсkhouse-server не экспортированы - настраиваем экспорт TCP порта, для этого:
- редактируем файл .env, задаем значение переменной:
- Перезапускаем clickhouse-server:
- Выполняем настройку clickhouse-backup, для чего:
- создаем файл /etc/clickhouse-backup/config.yml
- заполняем файл:
general: # тип удаленного хранилища remote_storage: sftp max_file_size: 0 backups_to_keep_local: 0 backups_to_keep_remote: 0 log_level: error allow_empty_backups: false download_concurrency: 16 upload_concurrency: 4 upload_max_bytes_per_second: 0 download_max_bytes_per_second: 0 object_disk_server_side_copy_concurrency: 32 allow_object_disk_streaming: false use_resumable_state: true restore_schema_on_cluster: "" upload_by_part: true download_by_part: true restore_database_mapping: {} restore_table_mapping: {} retries_on_failure: 3 retries_pause: 5s watch_interval: 1h full_interval: 24h watch_backup_name_template: shard{shard}-{type}-{time:20060102150405} sharded_operation_mode: "" cpu_nice_priority: 15 io_nice_priority: idle rbac_backup_always: true rbac_conflict_resolution: recreate retriesduration: 5s watchduration: 1h0m0s fullduration: 24h0m0s clickhouse: username: <имя пользователя для подключения к clickhouse> password: <пароль пользователя для подключения к ClickHouse> host: localhost port: 9000 disk_mapping: default: /opt/aw/db/clickhouse # путь к директории где ClickHouse хранит данные skip_tables: - system.* - INFORMATION_SCHEMA.* - information_schema.* - _temporary_and_external_tables.* skip_table_engines: [] timeout: 30m freeze_by_part: false freeze_by_part_where: "" use_embedded_backup_restore: false embedded_backup_disk: "" backup_mutations: true restore_as_attach: false check_parts_columns: false secure: false skip_verify: false sync_replicated_tables: false log_sql_queries: true # директория с конфигурационным файлом ClickHouse config_dir: /opt/aw/app/docker/clickhouse/ # команда для перезапуска clickhouse-server restart_command: exec:cd /opt/aw/app && docker compose restart clickhouse-server ignore_not_exists_error_during_freeze: true check_replicas_before_attach: true default_replica_path: /clickhouse/tables/{cluster}/{shard}/{database}/{table} default_replica_name: '{replica}' tls_key: "" tls_cert: "" tls_ca: "" max_connections: 16 debug: false # настройка для хранилища рез. копий, в данном случае копии передаются # в хранилище по протоколу sftp sftp: address: <IP-адрес или имя сервера> port: <SSH-порт> username: <имя пользователя для подключения по SSH> password: <пароль пользователя для подключения по SSH> key: "" path: <путь куда складывать рез. копии> object_disk_path: "" compression_format: tar compression_level: 1 concurrency: 48 debug: false
- Выполняем резервное копирование Clickhouse:
- Проверяем что рез. копия создалась:
- Отправляем рез. копияю в хранилище:
Резервное копирование Minio (без остановки сервера)¶
Резервное копирование Minio выполняется с помощью утилиты rclone. Утилита rclone выполняет удаленное подключение к S3-подобному сервису и позволяет оперировать объектами, например:
- копировать файлы и директории с локального диска на удаленное объектное хранилище,
- копировать объекты с удаленного хранилища на локальную ФС,
- выполнять синхронизацию между двумя удаленными объектными хранилищами.
Дополнительные сведения можно найти на сайте проекта rclone.
Настройка rclone¶
Сведения по настройке rclone приведены в руководстве Установка и настройка утилиты rclone
Настройка minio¶
Для того чтобы rclone смог выполнить подключение к сервису Minio из состава AW, необходимо чтобы Minio экспортировал порт на котором работает S3 протокол. Для того чтобы открыть нужный порт, необходимо отредактировать значение переменной MINIO_PORT_S3 (значение по умолчанию 8181 или 19000) в файле .env в директории установки AW. Если значение переменной было отредактировано то нужно перезапустить сервис minio командой:
Выполнение рез. копирования minio¶
Для того чтобы выполнить копирование файлов из удаленного объектного хранилища AW на локальный диск выполните команды (rclone должен быть уже настроен):
# создаем директорию
mkdir -p AWS3/$(date "+%Y-%m-%d")
for i in $(rclone lsf awMinio:); do rclone --size-only copy <имя конфига AW Minio для rclone>:${i} AWS3/$(date "+%Y-%m-%d")/${i}; done
Резервное копирование файловых источников и проч.¶
Для резервного копирования файлов системы выполните следующие действия:
- выполните подключение к серверу приложения по SSH;
- перейдите в рабочую директорию приложения ( по умолчанию - /opt/aw/app ):
- выполните резервное копирование файлов:
tar -czf file-storage-$(date "+%Y-%m-%d").tar.gz ../file_storage/api ../file_storage/jars ../file_storage/file_puller
В результате выполнения команды будет создан архив с текущей датой в имени, например:
Восстановление БД AW из резервной копии¶
Для восстановления БД Системы из резервной копии выполните следующие действия:
- выполните подключение к серверу приложения по SSH;
- перейдите в рабочую директорию приложения (по умолчанию - /opt/aw/app );
- остановите приложение ( это необходимо, чтобы обеспечить консистентность файлов БД ):
- удалите или переместите в другое место текущие файлы БД AW в случае необходимости:
- скопируйте резервную копию файлов БД AW на сервер в директорию на уровень выше директории установки AW (по умолчанию - /opt/aw);
- разархивируйте файлы БД из резервной копии:
- Запустите AW: