Изначально лучше монтировать расположение директории данных по умолчанию (как правило /var/lib) на второй раздел, чтобы не переносить базу после установки базуPostgreSQL.
Для переноса:
- Получить пути до конфигурационного файла postgresql.config и директории с БД:
зайти в клиент psql
Code Block language bash sudo -u postgres psql
получить путь до postgresql.config
Code Block language bash show config_file;
получить путь до директории с БД
Code Block language sql show data_directory;
Остановить службу postgresql.service
Code Block language bash sudo systemctl stop postgresql.service
- Создать директорию для размещения БД (если еще нет) и выдать необходимые права:
создать директорию
Code Block language bash sudo mkdir -p /new/data/location/
сменить владельца
Code Block language bash sudo chwonchown -R postgres:postgres /new/data/location/
установить уровень доступа
Code Block language bash sudo chmod 700 /new/data/location/
Скопировать данные из директории с БД в новую директорию
Code Block language bash sudo rsync -av <data_directory из шага 1> /new/data/location/
Открыть файл postgresql.config
Code Block language bash sudo nano <config_file из шага 1>
Заменить путь на новый
Code Block language bash data_directory = '/new/data/location'
Проверить указан ли старый путь в postgresql.service. Исправить на новый если указан.
Code Block language bash sudo nano /lib/systemd/system/postgresql.service
Если изменялся файл postgresql.service перезагрузить менеджер конфигурации systemd
Code Block language bash sudo systemctl daemon-reload
Запустить службу postgresql.service
Code Block language bash sudo systemctl start postgresql.service
- Проверить изменился ли путь:
зайти в клиент psql
Code Block language bash sudo -u postgres psql
проверить путь в data_directory
Code Block language bash show data_directory;
- должен быть указан новый путь