Резервное копирование и репликация — это две разные вещи.
Резервное копирование создаёт снимок данных на определённый момент времени. Оно предоставляет точку восстановления.
Репликация означает распределение каждого действия на другую систему, чтобы данные хранились более чем в одном месте. Удаления также реплицируются.
Если вы действительно хотите обеспечить отказоустойчивость, вам нужны оба механизма (и даже больше…)
Таким образом, репликация решает только проблему наличия актуальных данных в нескольких местах. Резервное копирование предоставляет способ восстановления системы на определённый момент времени.
Discourse использует два механизма для хранения данных:
- База данных PostgreSQL для всего, кроме вложенных файлов
- Вложенные файлы хранятся на локальной системе или в S3
Для резервного копирования и/или репликации данных, хранящихся в базе данных PostgreSQL, обратитесь к документации PostgreSQL: о резервном копировании и о репликации.
Работа с вложенными файлами немного сложнее. Если вы храните их в S3, можно использовать резервное копирование S3. Для локально хранимых файлов можно использовать различные варианты локальных систем.
Создание полных резервных копий — задача ресурсоёмкая, особенно при большом объёме данных, поэтому делать это чаще не всегда удобно. Стандартная процедура резервного копирования в Discourse предполагает создание полных копий. Если вы действительно хотите снизить риск потери данных, стоит рассмотреть другие варианты.
Один из возможных вариантов может быть предоставлен вашим хостинг-провайдером: снимки томов (volume snapshots). Это позволяет создать «мгновенную» копию данных, хранящихся на томе, и восстановить том на тот момент времени. Снимки томов также могут быть доступны на уровне ОС в зависимости от используемой файловой системы (например, btrfs поддерживает эту функцию).
Кроме того, документация PostgreSQL описывает создание более непрерывных резервных копий базы данных, что обеспечивает отличное восстановление на определённый момент времени (не забудьте отправлять резервные копии в другое место). Это значительно быстрее, чем полное резервное копирование.
Для более детального резервного копирования вложений можно использовать различные инструменты, поддерживающие управление полными и дифференциальными резервными копиями. Например, duplicity. Также можно использовать rsync (без удаления). Между снимками всё ещё возможна потеря файлов. Использование S3 без удаления будет безопаснее, так как файлы уже хранятся на другой системе.
В заключение: стандартный механизм резервного копирования Discourse не подходит для частого графика резервного копирования. Если вам нужно больше резервных копий, используйте комбинацию стандартных функций резервного копирования/репликации PostgreSQL, S3, снимков томов и т. д.
На моём сайте я не использую систему резервного копирования Discourse для регулярных резервных копий. У меня всё ещё есть ежедневные резервные копии, но я использую комбинацию pg_dump и конфигураций duplicity (координируемых через backupninja).