Бекап и восстановление в PostrgeSQL
Для создания резервной копии воспользуемся утилитой pg_dump, которая позволяет создать дамп для указанной БД. Создание дампа происходит без блокирования таблиц и представдляет снимок БД на момент выполнения команды. Т. е. вы можете создавать дампы во время работы пользователей, в то время как для создания резервной копии средствами 1С вам нужен монопольный доступ к базе.
Синтаксис pg_dump предельно прост, нам нужно указать имя базы и расположение и название файла дампа. Просмотреть список баз можно командой:
psql -U postgres -l
Кроме списка баз вывод содержит ряд полезной информации, например о кодировке базы, данная информация пригодится нам при восстановлении БД на другом сервере.
Теперь, уточнив наименование баз на сервере создадим резервную копию базы unf14:
pg_dump -U postgres unf14 > ~/unf14.pgsql.backup
sudo -u postgres pg_dump chat > /home/user/chat.sql
результатом выполнения команды будет файл дампа в домашней директории. Расширение файла мы рекомендуем указывать таким образом, чтобы по нему было понятно назначение данного файла и оно может быть любым. В нашем случае мы используем pgsql.backup, глянув на такой файл сразу станет понятно о его назанчении, это может быть важно, если поиском дампов будут заниматься ваши коллеги. Также мы не рекомендуем использовать расширение .bak, потому что многие утилиты «для оптимизации» удаляют такие файлы.
При необходимости можем создать сжатый дамп:
pg_dump -U postgres unf14 | gzip > ~/unf14.pgsql.gz
Сжатие позволяет уменьшить размер дампов примерно вдвое, поэтому следует его использвать при передаче резервных копий по сети интернет или при ограниченном размере хранилища.
Перед восстановлением дампа следует создать целевую БД (при ее остутсвии), хотя мы рекомендуем делать это всегда. Еще одна БД есть не просит, зато избавляет от распространенной ситуации, когда залили не тот дамп или не в ту базу. Для создания базы выполним:
createdb -T template0 unf14
На платформе Линукс эта команда будет выглядеть так:
psql -U postgres unf14 < ~/unf14.pgsql.backup
sudo -u postgres psql chat < /home/user/chat.sql