Debian — backup pgSQL баз

Итак, делать бэкапы своих любимых и не очень БД не прихоть, а необходимость. Только подумайте, как вас «погладит по головке» руководство когда вы потеряете какую нибудь базу. Конечно же, молодые-зеленые лихачи-админы сразу могут возразить — мол как это, потерять базу? Такое разве возможно? У меня супер-пупер сервер с хардварный рейдом и новомодной файловой системой 🙂 До кучи огромный УПС и дизель за окном… Все это, конечно, классно, но от перепадов сетевого напряжение, пропадания оного, заливания водой серверной/сети БП, засыпания снегом и прочих радостей никто не застрахован 🙂 Да и уверены ли вы на 100% что ваш дизель заведется? Вы каждый день его тестируете? Поверьте, если есть хоть малейшая вероятность случиться беде — она обязательно случится, притом, в самый неподходящий момент (тем кто незнаком с законами Мёрфи — прошу ознакомиться!)
Спор о целесообразности бэкапов бесконечен — я из тех кто терял базы, с тех пор я делаю бэкапы … даже тестовых баз, если позволяет место.
Простенький скрипт для полного бэкапа mysql-баз я выкладывал ранее, тут же предлагаю ознакомиться со скриптом для бэкапа баз pgSQL.

#!/bin/bash

BACKUP_DIR="/backup/pg_SQL"
DATE=`date +%F`

/usr/bin/pg_dumpall |/bin/bzip2 -c > ${BACKUP_DIR}/${DATE}-all_bases.bz2
/usr/bin/pg_dumpall --roles-only |/bin/bzip2 -c > ${BACKUP_DIR}/${DATE}-all_roles.bz2

find ${BACKUP_DIR} -atime +7 -exec rm -f '{}' \;

Есть особенность для Debian — этот скрипт нужно запускать из-под пользователя postgres. Для этого рекомендую создать папку гдето в «нейтральном» месте системы, например /opt и поместить туда скрипт. В крон пользователя postgres прописать запуск данного скрипта с нужной вам периодичностью.

root@srv1:~# mkdir /opt/bin

Создаем там скрипт, для примера в текстовом редакторе vim, но можете использовать nano/mcedit, с листингом приведенным выше:

root@srv1:~# vim /opt/bin/pg_backup_all.sh

Даем этому скрипту права на выполнение:

root@srv1:~# chmod +x /opt/bin/pg_backup_all.sh

Также нам нужна директория куда будут складываться бэкапы, и опять же — не забыть что права записи в ней должны быть у пользователя postgres:

root@srv1:~# mkdir -p /backup/pg_SQL

Выдадим нужные права:

root@srv1:~# chmod 775 /backup
root@srv1:~# chmod 770 /backup/pg_SQL
root@srv1:~# chown root:postgres /backup
root@srv1:~# chown postgres:postgres /backup/pg_SQL

Настала очередь заставить наш скрипт запускаться раз в сутки «по крону». Для этого переходим под пользователя postgres:

root@srv1:~# su - postgres

Открываем конфиг crontab-а:

postgres@srv1:~$ crontab -e

И добавляем новое задание — у меня так:

13      5       *       *       *       /opt/bin/pg_backup_all.sh

Это запускает скрипт бэкапа раз в сутки в 5:13 AM

Enjoy!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?