Настройка резервного копирования вне кластера системы

Данный сценарий подойдет, если резервное копирование внешних баз данных настраивается на сервере вне кластера системы.

Требования

  • Установлен и настроен сервис Backup Wrapper.

  • Настроены базы данных PostgreSQL и ClickHouse для работы с резервными копиями.

  • S3-совместимое хранилище для хранения резервных копий, например: MinIO, AWS S3, Yandex Object Storage.

Настройка резервного копирования

Чтобы настроить резервное копирование:

  1. Подключитесь к серверу, с которого планируется запуск резервного копирования.

  2. Проверьте, что подключение к утилите wrapper настроено корректно, с помощью команд:

    curl -u <auth_user>:<auth_password> <wrapper_addr>/health
    curl -u <auth_user>:<auth_password> <wrapper_addr>/ready

    Здесь:

  3. Запустите автоматическое резервное копирование, выполнив команду:

    ./backup-wrapper backup --wait

    Также вы можете выполнить принудительное резервное копирование, выполнив команду в зависимости от типа резервной копии:

    • Создание полной резервной копии:

      ./backup-wrapper backup --type=full --wait
    • Создание резервной Incremental-копии (только для PostgreSQL):

      ./backup-wrapper backup --type=incremental --wait
  4. Проверьте, что резервные копии были созданы корректно, с помощью команды:

    • PostgreSQL

    • ClickHouse

    wal-g backup-list
    clickhouse-backup list remote
  5. Настройте автоматизацию резервного копирования в зависимости от сценария:

    • Через Cron

    • Через Systemd Timer

    Для автоматизации вы можете использовать встроенныый планировщик задач Cron в Unix-подобных ОС. Для этого cоздайте файл backup-wrapper в директории /etc/cron.d/ со следующим содержимым:

    <schedule> backup-user /bin/bash -c 'source /etc/backup-wrapper-v1.0.0/backup-client.env && /usr/local/bin/backup-wrapper backup --wait' >> /var/log/backup.log 2>&1

    Здесь:

    • <schedule> — расписание резервного копирования в Cron-формате. Например, 0 3 * * * — резервные копии будут создаваться ежедневно в 03:00.

    Чтобы составить cron-выражение, можно воспользоваться генератором, например, crontab.guru.

    Вы можете автоматизировать резервное копирование с помощью механизма Systemd Timer, так как сервис Backup Wrapper устанавливается как systemd-служба. Для этого:

    1. Создайте файл backup-wrapper.timer в директории /etc/systemd/system/ со следующим содержимым:

      [Unit]
      Description=Daily backup timer
      
      [Timer]
      OnCalendar=<schedule>
      Persistent=true
      RandomizedDelaySec=300
      
      [Install]
      WantedBy=timers.target

      Здесь:

      • <schedule> — задайте расписание таймера в формате Calendar Events. Например: *-*-* 02:00:00 — резервное копирование будет запускаться каждый день в два часа ночи.

    2. Создайте файл backup-wrapper.service в директории /etc/systemd/system/ со следующим содержимым:

      [Unit]
      Description=Run backup via backup-wrapper
      
      [Service]
      Type=oneshot
      EnvironmentFile=/etc/backup-wrapper-v1.0.0/backup-client.env
      ExecStart=/usr/local/bin/backup-wrapper backup --wait
      User=backup-user
      StandardOutput=journal
      StandardError=journal
    3. Перезагрузите конфигурацию менеджера системы, выполнив команду:

      sudo systemctl daemon-reload
    4. Включите Systemd Timer, выполнив команду:

      sudo systemctl enable --now backup-wrapper.timer
    5. Проверьте, что Systemd Timer запущен и работает корректно, с помощью команды:

      systemctl list-timers | grep backup
  6. Проверьте, что задачи резервного копирования корректно создаются, с помощью следующих команд:

    • Вывести список последних задач:

      curl -u admin:password http://localhost:8080/api/v1/jobs
    • Вывести задачи со статусом failed:

      curl -u admin:password http://localhost:8080/api/v1/jobs?status=failed

Была ли полезна эта страница?

Обратная связь