Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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