Изначально лучше монтировать расположение директории данных по умолчанию (как правило /var/lib) на второй раздел, чтобы не переносить базу после установки PostgreSQL.

Для переноса:

  1. Получить пути до конфигурационного файла postgresql.config и директории с БД:
    • зайти в клиент psql

      sudo -u postgres psql
    • получить путь до postgresql.config

      show config_file;
    • получить путь до директории с БД

      show data_directory;
  2. Остановить службу postgresql.service

    sudo systemctl stop postgresql.service
  3. Создать директорию для размещения БД (если еще нет) и выдать необходимые права:
    • создать директорию

      sudo mkdir -p /new/data/location/
    • сменить владельца

      sudo chown -R postgres:postgres /new/data/location/
    • установить уровень доступа

      sudo chmod 700 /new/data/location/
  4. Скопировать данные из директории с БД в новую директорию

    sudo rsync -av <data_directory из шага 1> /new/data/location/
  5. Открыть файл postgresql.config

    sudo nano <config_file из шага 1>
  6. Заменить путь на новый

    data_directory = '/new/data/location'
  7. Проверить указан ли старый путь в postgresql.service. Исправить на новый если указан.

    sudo nano /lib/systemd/system/postgresql.service
  8. Если изменялся файл postgresql.service перезагрузить менеджер конфигурации systemd

    sudo systemctl daemon-reload
  9. Запустить службу postgresql.service

    sudo systemctl start postgresql.service
  10. Проверить изменился ли путь:
    • зайти в клиент psql

      sudo -u postgres psql
    • проверить путь в data_directory

      show data_directory;
    • должен быть указан новый путь
  • No labels