Бази даних з часом розростаються, інколи перевищуючи обсяг вихідної файлової системи. Ви також можете зіткнутися з конкуренцією вводу-виводу, якщо вони розташовані на тому самому розділі, що й інша частина операційної системи. RAID, мережеве сховище блоків та інші пристрої можуть запропонувати резервування та інші бажані функції. Якщо ви додаєте більше місця, оцінюєте способи оптимізації продуктивності чи бажаєте скористатися перевагами інших функцій зберігання, цей підручник допоможе вам перемістити директор даних PostgreSQL
У цьому прикладі ми переміщуємо дані на блочний накопичувач, встановлений на /mnt/diskd
Незалежно від того, яке базове сховище ви використовуєте, наступні кроки допоможуть вам перемістити каталог даних у нове місце.
- Перевірте існуючий каталог даних. Запустіть psql.
$ sudo -u postgres psql
Увійшовши до монітора, виберіть каталог даних:
postgres=# ПОКАЗАТИ каталог_даних;
Вихід:
каталог_даних ------------------------------ /var/lib/postgresql/9.6/main (1 ряд)
Цей вихід підтверджує, що PostgreSQL налаштовано на використання каталогу даних за замовчуванням /var/lib/postgresql/9.6/main
, тому це каталог, який нам потрібно перемістити. Після того, як ви підтвердите каталог у своїй системі, введіть, \q
щоб вийти.
Щоб забезпечити цілісність даних, ми вимкнемо PostgreSQL перед тим, як фактично внесемо зміни в каталог даних:
sudo systemctl зупинити postgresql
systemctl
не відображає результати всіх команд керування службами. Щоб переконатися, що вам вдалося, скористайтеся такою командою:
sudo systemctl status postgresql
Тепер, коли сервер вимкнено, ми скопіюємо існуючий каталог бази даних у нове розташування за допомогою rsync
. Використання -a
прапора зберігає дозволи та інші властивості каталогу, водночас -v
забезпечує докладний вихід, щоб ви могли стежити за прогресом.
Примітка. Переконайтеся, що в каталозі немає кінцевої скісної риски, яка може бути додана, якщо ви використовуєте завершення табуляції. Якщо в кінці стоїть скісна риска, rsync
буде створено дамп вмісту каталогу в точку монтування замість того, щоб перенести його в PostgreSQL
каталог, що містить:
Ми почнемо rsync
з postgresql
каталогу, щоб імітувати оригінальну структуру каталогу в нашому новому місці. Створивши цей postgresql
каталог у каталозі точки монтування та зберігши право власності за користувачем PostgreSQL, ми можемо уникнути проблем із дозволами для майбутніх оновлень. Каталог версій 9.6
не є абсолютно необхідним, оскільки ми чітко визначили розташування у postgresql.conf
файлі, але дотримання умов проекту точно не завадить, особливо якщо в майбутньому виникне потреба запускати кілька версій PostgreSQL.
sudo rsync -av /var/lib/postgresql /mnt/diskd
Після завершення копіювання ми перейменуємо поточну папку з розширенням .bak і збережемо її, доки не підтвердимо успішне переміщення. Перейменувавши його, ми уникнемо плутанини, яка може виникнути через файли як у новому, так і в старому місці:
sudo mv /var/lib/postgresql/9.6/main /var/lib/postgresql/9.6/main.bak
Тепер ми готові звернути увагу на налаштування.
2. Вказівка нового розташування даних
PostgreSQL має кілька способів замінити значення конфігурації. За замовчуванням у файлі data_directory
встановлено значення . Відредагуйте цей файл, щоб відобразити новий каталог даних:/var/lib/postgresql/9.6/main
/etc/postgresql/9.6/main/postgresql.conf
sudo nano /etc/postgresql/9.6/main/postgresql.conf
Знайдіть лінію, яка починається з data_directory
, і змініть шлях, який слідує, щоб відобразити нове розташування.
У нашому випадку оновлений файл виглядає так:
каталог_даних = '/mnt/diskd/postgresql/9.6/main'
Ми готові до запуску PostgreSQL.
sudo systemctl запустити postgresql sudo systemctl status postgresql
Щоб переконатися, що новий каталог даних дійсно використовується, запустіть монітор PostgreSQL.
sudo -u postgres psql
postres=# ПОКАЗАТИ каталог_даних;
Вихід:
каталог_даних ---------------------------------------------- /mnt/diskd/postgresql/9.6/main (1 ряд)
Тепер, коли ви перезапустили PostgreSQL і підтвердили, що він використовує нове розташування, скористайтеся нагодою, щоб переконатися, що ваша база даних працює повністю. Перевіривши цілісність будь-яких існуючих даних, ви можете видалити каталог резервних даних:
sudo rm -Rf /var/lib/postgresql/9.6/main.bak
Готово.
Коментарі