JavaRush /Курси /SQL SELF /Створення базових резервних копій з pg_dump...

Створення базових резервних копій з pg_dump

SQL SELF
Рівень 43 , Лекція 2
Відкрита

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

Головна перевага pg_dump у тому, що воно дозволяє переносити дані між серверами, відновлювати базу після збою або просто створювати архів для довготривалого зберігання. Варто зазначити, що ця утиліта більше підходить для логічного резервного копіювання (через SQL-запити), ніж для фізичного копіювання файлів бази даних.

Основний синтаксис команди pg_dump

Щоб створити резервну копію за допомогою pg_dump, достатньо виконати таку команду в терміналі:

pg_dump -U username -d database_name -f backup_file.sql

Розберемо компоненти команди:

  • -U username — вказує ім'я користувача PostgreSQL, яке використовується для підключення до бази.
  • -d database_name — задає ім'я бази даних, для якої створюється резервна копія.
  • -f backup_file.sql — визначає, куди зберегти файл резервної копії. Це може бути як повний шлях на диску, так і відносний.

Приклад: припустимо, у тебе є база university, і ти хочеш зробити резервну копію у файл university_backup.sql. Команда буде виглядати так:

pg_dump -U postgres -d university -f university_backup.sql

При цьому PostgreSQL попросить пароль користувача postgres, щоб дозволити доступ до даних.

Порада: якщо ти працюєш з локальним сервером і не хочеш кожного разу вводити пароль, налаштуй файл .pgpass. Почитай офіційну документацію PostgreSQL для додаткових інструкцій.

Параметри та їх використання

Утиліта pg_dump дуже гнучка і може бути налаштована для створення резервних копій з різними параметрами:

  1. Створення бекапу тільки структури бази

Якщо тобі потрібно зберегти лише структуру бази (наприклад, щоб розгорнути її на новому сервері), використовуй прапорець --schema-only. Приклад команди:

pg_dump -U postgres -d university --schema-only -f university_schema.sql

Це створить SQL-скрипт, який містить тільки команди CREATE TABLE, CREATE INDEX і т.д., без даних.

  1. Створення бекапу тільки даних

Іноді треба зберегти лише дані, без структури. В такому випадку використовуй прапорець --data-only:

pg_dump -U postgres -d university --data-only -f university_data.sql

Отриманий файл міститиме команди INSERT INTO, які відновлять твої дані.

  1. Стиснення резервної копії

Створений файл резервної копії може бути досить великим, особливо якщо у базі багато таблиць і даних. Щоб зменшити розмір файлу, використовуй параметр --compress:

pg_dump -U postgres -d university -f university_backup.sql --compress=6

Рівень стиснення задається числом від 0 (без стиснення) до 9 (максимальне стиснення). Майте на увазі, що чим вищий рівень стиснення, тим більше часу потрібно для створення резервної копії.

  1. Експорт у бінарний формат

Якщо хочеш використовувати швидший спосіб відновлення, можна зберегти резервну копію у бінарному форматі замість текстового SQL-скрипта:

pg_dump -U postgres -d university -Fc -f university_backup.dump

Ключ -Fc вказує формат Custom, який підтримує відновлення через утиліту pg_restore.

Приклади створення резервних копій

Повний бекап бази

Припустимо, у тебе є база company, і ти хочеш зробити повний бекап, включаючи структуру і дані:

pg_dump -U postgres -d company -f company_backup.sql

Бекап однієї таблиці

Якщо треба зберегти лише одну таблицю з бази, використовуй параметр -t:

pg_dump -U postgres -d company -t employees -f employees_backup.sql

Цей файл міститиме структуру і дані тільки з таблиці employees.

Бекап кількох таблиць

Для резервного копіювання кількох таблиць додай кілька параметрів -t:

pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql

Стиснутий бекап

Щоб зекономити місце, використовуй прапорець --compress або одразу створи файл у стиснутому форматі:

pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump

Корисні поради

Перевіряй розмір файлу бекапу. Якщо резервна копія занадто маленька, можливо, сталася помилка. Використовуй параметр --verbose для отримання детальнішої інформації про процес створення бекапу.

Автоматизуй процес. Використовуй cron або pg_cron, щоб налаштувати регулярне створення резервних копій. Не забудь про правильну ротацію старих бекапів, щоб не забити диск.

Перевіряй копії на коректність. Тестуй створені резервні копії шляхом відновлення бази на тестовому сервері.

Помилки, з якими ти можеш зіткнутися

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

Помилка підключення. Якщо сервер PostgreSQL не запущений або ти неправильно вказав ім'я бази, утиліта не зможе створити резервну копію. Перевір ім'я бази і статус сервера.

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

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ