Перейти к основному содержимому
Версия: 1.12

Рекомендации по резервному копированию Sage

Объем данных в Sage может достигать больших объемов, вплоть до петабайт данных. Восстановить такой объем данных — значит выбрать из двух зол:

  • восстановление данных будет выполнятся очень долго
  • это потребует серьезных ресурсов, а значит и затрат (нужно держать где-то горячий резерв Sage, по сути — потратить практически x2 ресурсов)

Поэтому предлагается следующее допущение: данные телеметрии в случае возникновения сценария полной утраты данных всего кластера каждого из типов телеметрии (логи/метрики/трейсы) — эти данные восстанавливать не требуется, важнее восстановить работу всей системы мониторинга (конфигурация, пользователи и т.д.), чтобы в нее смогли поступать новые данные, а пользователи могли продолжать пользоваться системой.

С учетом этого допущения можно следовать следующим рекомендациям:

  • делать резервные копии серверов, используемых в качестве хранилищ данных (Opensearch, VictoriaMetrics, ClickHouse, и т.п.) — не требуется, в случае утраты данных на этих серверах нужно перепрогнать установку на них либо поднять новые сервера.

  • резервную копию БД PostgreSQL следует делать стандартными инструментами и по процессам, принятым в вашей организации, ниже — примеры таких скриптов:

    Экспорт данных
    export PG_HOST="<хост БД>"
    export PG_PORT="<порт БД>"
    export PG_DBNAME="<имя БД>"
    export PG_USERNAME="<имя пользователя БД>"
    export PG_DUMP_FILE="<имя файла для сохранения дампа>"

    pg_dump \
    --format=custom \
    --blobs \
    --host="${PG_HOST}" \
    --port="${PG_PORT}" \
    --dbname="${PG_DBNAME}" \
    --username="${PG_USERNAME}" \
    --no-owner \
    --no-privileges \
    --clean \
    --verbose \
    --file="${PG_DUMP_FILE}" \
    2>&1
    Восстановление данных
    export PG_HOST="<хост БД>"
    export PG_PORT="<порт БД>"
    export PG_DBNAME="<имя БД>"
    export PG_USERNAME="<имя пользователя БД>"
    export PG_DUMP_FILE="<имя файла для сохранения бэкапа>"

    pg_restore \
    --format=custom \
    --host="${PG_HOST}" \
    --port="${PG_PORT}" \
    --dbname="${PG_DBNAME}" \
    --username="${PG_USERNAME}" \
    --no-owner \
    --no-privileges \
    --clean \
    --single-transaction \
    --if-exists \
    --verbose \
    "${PG_DUMP_FILE}" \
    2>&1
  • резервные копии остальных сервисов можно выполнять стандартными средствами, особых требований нет, потому что остальные сервисы типа stateless и не чувствительны к состояниям на сервере (память, диск).