Створення резервної копії даних postgresql на сервері ubuntu

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Що таке PostgreSQL?

PostgreSQL - це сучасна відкрита система управління базами даних (або СУБД), яка часто використовується для зберігання інформації, необхідної для роботи сайтів і веб-додатків.

Для запобігання втрати цінних даних дуже важливо впровадити схему резервного копіювання. Даний посібник охоплює кілька практичних способів створення резервних копій даних в PostgreSQL.

Для виконання керівництва необхідний віртуальний виділений сервер Ubuntu 12.04 і PostgreSQL 9.1 (керівництво також дійсно для новіших версій СУБД).

PostgreSQL надає утиліту pg_dump, яка дозволяє зробити дамп бази PostgreSQL з метою резервного копіювання.

Утиліта pg_dump запускається з командного рядка Linux. Її базовий синтаксис виглядає так:

pg_dump name_of_database> name_of_backup_file

Для запуску команди потрібно мати право на читання всієї інформації БД, тому її, як правило, слід запускати як привілейований користувач (англ. Superuser).

Для прикладу можна увійти як користувач postgres (стандартний користувач БД PostgreSQL) і виконати команду на стандартну БД, яка теж зветься postgres:

sudo su - postgres
pg_dump postgres> postgres_db.bak

Дана команда є клієнтською програмою PostgreSQL, тому її можна запускати на віддаленій системі (якщо вона має відповідні права на БД).

Щоб створити резервну копію даних лише у віддаленій системи, внесіть в команду прапор -h (який вказує на віддалений хост) і -p (вказує на віддалений порт):

pg_dump -h remote_host -p remote_port name_of_database> name_of_backup_file

Крім того, можна вказати іншого користувача за допомогою опції -U. Синтаксис матиме такий вигляд:

pg_dump -U user_name -h remote_host -p remote_port name_of_database> name_of_backup_file

Пам'ятайте. як і будь-яка інша клієнтська команда, pg_dump має певні вимоги аутентифікації. Це означає, що для створення резервної копії системи необхідно мати валідниє облікові дані цієї системи.

Відновлення дампа PostgreSQL за допомогою pg_dump

Щоб відновити дамп даних, створений за допомогою pg_dump, можна перенаправити цей файл в стандартне введення psql:

psql empty_database

Примітка. ця операція перенаправлення не створює необхідну базу даних. Її потрібно створити окремо до запуску команди.

Для прикладу можна створити нову БД на ім'я restored_database, а потім перенаправити дамп на ім'я database.bak; для цього потрібно виконати:

createdb -T template0 restored_database
psql restored_database

При цьому буде створена порожня БД на основі template0.

Для коректного відновлення дампа можна виконати ще одну дію - відтворити будь-якого користувача, який володіє або має привілеї на об'єкти в базі даних.

Наприклад, якщо БД належить користувачеві test_user, то перед імпортуванням потрібно створити його в відновлюваної системі:

createuser test_user
psql restored_database

Усунення помилок відновлення

За замовчуванням СУБД PostgreSQL продовжить відновлювати дані, навіть зіткнувшись з помилкою.

Але в багатьох випадках це поведінка небажано, оскільки пізніше буде дуже непросто виявити помилку і відновити колишній вигляд БД.

Щоб система PostgreSQL переривала відновлення в разі виникнення помилки, наберіть:

psql --set ON_ERROR_STOP = on restored_database

Ця команда зупинить операцію відновлення PostgreSQL в разі помилки.

Звичайно, в системі залишиться пошкоджена БД, яка була лише частково відновлена; тим не менш, такий підхід дозволяє усувати помилки у міру їх надходження, а не після повного відновлення БД (що може виявитися досить непростим завданням).

У багатьох ситуаціях відмінним рішенням може виявитися використання опції -1 (цифра один) або -single-transaction:

psql -1 restored_database

Ця опція виконує весь процес відновлення в рамках однієї транзакції.

Різниця між цією опцією і налаштуванням ON_ERROR_STOP полягає в тому, що вона або повністю завершить процес, або ж не виконає зовсім нічого.

Цей процес може виявитися дуже витратним для відновлення великих БД, але в багатьох випадках відсутність в системі пошкодженої БД варто витрачених ресурсів.

Утиліта pg_dumpall дозволяє створити резервну копію всіх даних.

Синтаксис цієї команди дуже схожий на синтаксис pg_dump; але в даному випадку не потрібно вказувати БД, оскільки команда скопіює всі доступні бази даних:

pg_dumpall> backup_file

Щоб відновити ці баз даних, потрібно передати файл psql з БД за замовчуванням:

psql -f backup_file postgres

Резервна копія даних - невід'ємний компонент плану зберігання даних будь-якого виду. На щастя, PostgreSQL надає зручні утиліти, що дозволяють створювати ефективні резервні копії важливої ​​інформації.

Важливо регулярно перевіряти та оновлювати свої резервні копії, щоб в разі необхідності мати доступ до останніх версій баз даних. Запам'ятайте: резервні копії корисні тільки в тому випадку, якщо з їх допомогою можна відновити систему до її останнього стану.

Схожі статті