Есть ли простой способ ежедневного резервного копирования всех ваших локальных баз данных (тот же сервер postgresql)? Я нашел несколько сценариев bash, которые могу использовать, но они кажутся очень сложными для такой работы.
Есть какие-нибудь простые предложения?
Поскольку мои базы данных довольно малы, я "обманываю" и использую logrotate для создания резервных копий postgresql. Примерно так в /etc/logrotate.d/postgresql-backup:
/var/backups/postgresql-dump.sql {
daily
nomissingok
rotate 30
compress
delaycompress
ifempty
create 640 root adm
dateext
postrotate
/usr/bin/sudo -u postgres /usr/bin/pg_dumpall --clean > /var/backups/postgresql-dump.sql
endscript
}
Это дает мне удобный доступный полный дамп, не старше одного дня, и автоматически сжимает и вращает предыдущие дампы.
Очевидно, это не будет масштабироваться с большими базами данных, но для моей цели это почти идеально. (Я также использую BackupPC для обработки удаленных резервных копий, которые включают локальные резервные копии postgresql)
Если у вас есть /etc/cron.daily, поместите туда однострочник, который вызывает pg_dumpall.
Примечание: это самый простой способ, но он создает несжатый сценарий SQL, который будет выполняться из psql.
Для сжатия используйте gzip (быстрее), bzip2 или lzma (медленнее, меньший размер)
В простых случаях может быть достаточно хранить разные копии на каждый рабочий день. Хранение еженедельных, ежемесячных или инкрементных резервных копий зависит от вас.
Я полагаю, что сложные сценарии, которые вы видели, создают резервные копии баз данных в двоичном формате с использованием pg_dump / pg_restore, что является более гибким.
Я настроил ежедневное резервное копирование следующим образом:
mkdir /home/dbdump
vim /etc/cron.daily/dbdump
#!/bin/sh
pg_dumpall --globals-only --username=postgres > /home/dbdump/globals.dump
pg_dump --format=custom --username=postgres > /home/dbdump/postgres.dump
chmod 700 /etc/cron.daily/dbdump
Затем я использую rsnapshot с другого сайта, чтобы сохранить копии этих дампов.
Причина, по которой я решил не использовать pg_dumpall, заключается в том, что pg_dump имеет более гибкие варианты. Вам нужно будет использовать несколько pg_dump
команды, если у вас несколько баз данных
я использую autopgsqlbackup (PostgreSQL порт automysqlbackup), также можно установить как Пакет Debian.