Перенесення бази PostgreSQL із сервера на сервер

Чи не проста операція, якщо ви не мали досвіду налаштування / роботи з postgresql до цих пір. Розкажу поетапно як вивантажити дамп бази і як потім цей дамп завантажити в потрібному місці :).

Фокуси, які тут не працюють

Бази mySQL я іноді експортую не за допомогою скрипту, а копіюю файли даних. У каталозі, де вони зберігаються, назва підкаталогів - це імена баз, а кожна таблиця складається з 2-3 файлів, з іменем як сама таблиця. Копіювання спрацює, якщо основні версії серверів збігаються.

У випадку postgresql такий фокус не працює. Ви можете підглянути папку з базами даних у конфігурації (вам допоможе ось така команда)

У прикладі папка з базами: -D /var/lib/postgresql/9.3/main

Назви таблиць та баз ви тут не побачите у явному вигляді. Копіювання файлів буде марним.

Найголовніший адмін

Переходимо під цей облік.

Переглянути список баз даних

Щоб дізнатися, які бази у вас є в наявності, можна використовувати команду:

У консоль буде виведено список баз даних, інформація про власника кожної бази, привілеї.

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

Отримання дампи бази postgresql

Для створення дамп бази служить команда pg_dump. Ми надішлемо її виведення у файл через gzip.

myDBname – це назва бази даних, а myDB-filedump.gz – назва файлу, куди буде збережено дамп.

-h [host] : явна вказівка ​​хоста, значення за промовчанням localhost або значення змінної оточення PGHOST.

: пропускає команди для встановлення власника таблиць, видів і т.д.

-F - формат виведенняданих custom, tar, plane text.

-U [username] — користувач, правами якого доступу потрібно скористатися при запиті даних. За промовчанням береться поточний користувач. За потреби програма запросить пароль.

-C, -create - додає команду для створення БД, я покажу як створити її вручну.

-c — додає команди видалення (drop) об'єктів (таблиць, видів тощо.).

Є й потужніша команда, яка вивантажує відразу всі бази: