xnotes.ru

Заметки и шпаргалки

Инструменты пользователя

Инструменты сайта


os:linux:postgresql

PostgreSQL

Перемещение каталога данных

Перед началом перемещения необходимо, что бы в системе было определено место в качестве нового местоположения каталога данных PostgreSQL. В моём случае установлен физический диск для этих целей /mnt/sdb1.
Вы можете подключить не только физический диск, но и любой другой. Всё зависит от Ваших целей и предпочтений.

Когда с новым местоположением всё определено, приступаем к перемещению.

1. Подготовка

Проверяем текущее местоположение каталога данных. Подключаемся к PostgreSQL под пользователем postgres:

sudo -u postgres psql

Выводим текущий каталог на экран:

SHOW data_directory;

Предположим, что наш текущий каталог /var/lib/postgresql/14/main.

Выходим из psql:

\q

Останавливаем и проверяем статус PostgreSQL:

sudo systemctl stop postgresql
sudo systemctl status postgresql

2. Копирование данных

Для того, что бы нам создать полную копию, будем использовать rsync.
Если в системе её нет, устанавливаем, например в Ubuntu:

sudo apt install rsync

Приступаем к копированию… Важно, при указании пути в конце / не ставим, что бы rsync скопировал всю папку postgresql в новое местоположение, а не только её содержимое.

# -a --- перенос всех свойств и прав каталога и подкаталогов
# -v --- вывести ход копирования на экран
sudo rsync -av /var/lib/postgresql /mnt/sdb1

После того, как rsync успешно выполнил свою работу, путь до каталога будет: /mnt/sdb1/postgresql/14/main.

Старый каталог не удаляем, а переименовываем, на случай, если пойдёт что-то не так с новым:

sudo mv /var/lib/postgresql/14/main /var/lib/postgresql/14/main.bak

3. Запуск PostgreSQL

Для начала необходимо в файле конфигурации PostgreSQL указать новый каталог с данными: Открываем /etc/postgresql/14/main/postgresql.conf любым удобным редактором и меняем путь в строке, как в примере:

...
data_directory = '/mnt/sdb1/postgresql/14/main'
...

Сохраняем файл, запускаем PostgreSQL и проверяем статус:

sudo systemctl start postgresql
sudo systemctl status postgresql

После успешного запуска, убедимся, что PostgreSQL использует новый каталог данных. Для этого выполним, как ранее:

sudo -u postgres psql
SHOW data_directory;

На экране должен быть указан наш новый путь до каталога.

Выходим:

\q

4. Заключение

Теперь самое важное и заключительное.

Если в PostgreSQL уже имеются базы данных, обязательно проверить их работоспособность перед удалением старого каталога с данными.

После того, как убедились, что всё работает как надо, удаляем старый каталог:

sudo rm -Rf /var/lib/postgresql/14/main.bak

На этом всё!

os/linux/postgresql.txt · Последнее изменение: 2023/03/11 01:11 — admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki