Резервное копирование базы данных с помощью встроенных средств резервирования
В данном разделе показано как сделать дамп базы данных PostgreSQL в консоли при подключении по SSH с помощью утилит pg_dump и pg_dumpall.
Утилита pg_dump
В PostgreSQL есть встроенный инструмент для создания резервных копий — утилита pg_dump. Утилита имеет простой синтаксис:
| Code Block | ||
|---|---|---|
| ||
pg_dump -options <имя базы> > <файл для сохранения копии> |
Где:
-options - параметры, с которыми должна выполняться утилита.
<имя базы> - название базы, которую необходимо сохранить.
<файл для сохранения копии> - название файла копии.
В простейшем случае достаточно указать имя базы данных, которую в дальнейшем нужно будет восстановить. Резервная копия создается следующей командой:
| Code Block | ||
|---|---|---|
| ||
pg_dump -U vitrodbuser -W vitrodb > /tmp/vitrodb.dump # pg dump u postgres |
Ключ -U определяет пользователя, а -W требует ввести пароль.
Чтобы сэкономить место на диске, можно сразу же сжимать дамп:
| Code Block | ||
|---|---|---|
| ||
pg_dump -U vitrodbuser -W vitrodb | gzip > /tmp/vitrodb.gz |
Для выполнения резервного копирования по расписанию, например, можно использовать скрипт. Нижеприведённый пример скрипта выполняет бэкап и удаляет все файлы старше 31 дня:
| Code Block | ||
|---|---|---|
| ||
#!/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin #Устанавливает переменную PATH для определения путей поиска исполняемых файлов
PGPASSWORD=vitrodbuser_password #Устанавливает переменную PGPASSWORD для установки пароля для доступа к базе данных PostgreSQL
export PGPASSWORD #Экспортирует переменную PGPASSWORD, чтобы она была доступна в дочерних процессах
pathB=/mnt/backup #Устанавливает переменную pathB для определения пути к каталогу резервных копий
dbUser=vitrodbuser #Устанавливает переменную dbUser для определения имени пользователя базы данных
database=vitrodb #Устанавливает переменную database для определения имени базы данных
find $pathB \( -name "*-[0123]?.*" \) -ctime +31 -delete #Поиск резервных копий, соответствующих заданным критериям и были изменены более 31 дня назад, после чего удаляет их
pg_dump -U $dbUser $database | gzip > $pathB/pgsql_$(date "+%Y-%m-%d").sql.gz #Создает резервную копии БД, сжимает её с помощью gzip и сохраняет в указанном каталоге с именем, содержащим текущую дату
unset PGPASSWORD #Сбрасывает переменную PGPASSWORD |
Для настройки работы данного скрипта по расписанию нужно настроить планировщик crontab:
| Code Block | ||
|---|---|---|
| ||
crontab -e 3 0 * * * /etc/scripts/pgsql_dump.sh # postgres pg dump |
Данная команда добавляет задание в cron, которое запускает скрипт /etc/scripts/pgsql_dump.sh и будет выполняться каждый день в 3:00.
Более подробное описание работы и параметров утилиты pg_dump см. по ссылке.
Утилита pg_dumpall
Утилита pg_dumpall реализует резервное копирование всего экземпляра (кластера или инстанса) базы данных без указания конкретной базы данных на инстансе:
| Code Block | ||
|---|---|---|
| ||
pg_dumpall > /tmp/instance.bak |
Чтобы сразу сжать резервную копию экземпляра базы данных, нужно передать вывод на архиватор gzip:
| Code Block | ||
|---|---|---|
| ||
pg_dumpall | gzip > /tmp/instance.tar.gz |
Более подробное описание работы и параметров утилиты pg_dumpall см. по ссылке.
Резервное копирование файлов
Утилита rsync
Rsync — утилита для удаленной синхронизации и копирования файлов. Одним из её преимуществ является то, что она позволяет не передавать файлы полностью, а только изменения в них, синхронизирует директории и файлы, имеет встроенный механизм сжатия.
Синтаксис утилиты в общем виде выглядит так:
| Code Block | ||
|---|---|---|
| ||
rsync -options <source> <destination> |
Где:
-options — параметры, с которыми должна выполняться утилита.
<source>— каталог или файл, который является источником.
<destination> — каталог или файл, который является приемником.
При локальном режиме работы достаточно задать каталог-источник и каталог-приемник:
| Code Block | ||
|---|---|---|
| ||
rsync -avzhHl /path/of/source/folder /path/to/destination/folder |
Заданные параметры:
-a - режим архивирования, который включает рекурсивное копирование, сохранение прав доступа, временных меток и т.д.
-v - уровень подробности вывода (verbose), позволяет видеть подробную информацию о процессе копирования.
-z - сжатие данных во время передачи.
-h - вывод размеров файлов в удобном для чтения формате (human-readable).
-H - сохранение жестких ссылок.
-l - сохранение символических ссылок.
Если копирование нужно выполнить с удаленным узлом, добавляется имя пользователя и IP-адрес или имя узла:
| Code Block | ||
|---|---|---|
| ||
rsync -avzhHl /path/of/source/folder root@192.168.52.1:/path/to/destination/folder |
Автоматическая синхронизация папок выполняется штатным способом — планировщиком заданий (cron). Создадим скрипт, который будет копировать файлы на удаленный узел:
| Code Block | ||
|---|---|---|
| ||
!/bin/sh
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/root/.ssh/id_rsa #Путь к ssh ключу для подключения к удаленному узлу
RUSER=root #Имя пользователя под которым будет происходить подключение к узлу
RHOST=192.168.56.1 #Адрес удаленного узла
RPATH=/remote/dir #Каталог, в который будут скопированы файлы
LPATH=/local/dir #Каталог, из которого будут скопированы файлы
$RSYNC -az -e "$SSH -i $KEY" $LPATH $RUSER@$RHOST:$RPATH |
Настройка планировщика crontab:
| Code Block | ||
|---|---|---|
| ||
crontab -e 0 22 * * * /root/scripts/rsync_to_cron.sh |
Данная команда добавляет задание в cron, которое запускает скрипт /root/scripts/rsync_to_cron.sh и будет выполняться каждый день в 22:00.
Более подробное описание работы и параметров утилиты pg_dump см. по ссылке.
В SharePoint 2010 используются два типа резервного копирования данных:
- Фрагментарное резервное копирование.
Резервирует на уровне коллекций веб-сайтов, сайтов и списков. Может выполняться для баз данных контента (как присоединенных к ферме, так и неприсоединённых).
Средства: Центр администрирования SharePoint 2010, STSADM, PowerShell; - Резервное копирование фермы.
Резервирует все остальное.
Для корректного выполнения процедуры копирования следует заранее определить следующие важные параметры:
- время восстановления данных (RTO) — минуты, часы, дни в зависимости от вида восстановления (например, 4 часа);
- объем потерянных данных (RPO) — минуты, часы, дни с момента последнего резервного копирования до наступления катастрофы (например, 8 часов);
- уровень восстановления данных — документ, библиотека, сайт, контентная база.
| Children Display |
|---|