Назад | Перейти на главную страницу

Альтернативное расположение базы данных PostgreSQL

Я использую Ubuntu 10.10, и у меня есть отдельный раздел для корневого каталога. Раздел не был настроен для больших баз данных, поэтому я хотел бы разместить свою базу данных PostgreSQL объемом 2+ ГБ в разделе / ​​home.

Первый совет, на который я натолкнулся, был initlocation команда, но это очевидно для более старых версий PostgreSQL.

Затем я столкнулся с initdb команда, но, похоже, она недоступна в Ubuntu 10.10 ... по какой-то причине.

Как мне это сделать на самом деле?

Эта команда initdb должен быть расположен на пути /usr/lib/postgresql/{version}/bin/initdb (вероятно, не входит в ваш PATH), однако вы можете использовать pg_createcluster обертка, особенно с -D вариант:

Этот параметр указывает каталог, в котором должен храниться кластер базы данных. Это единственная информация, которую требует initdb, но вы можете избежать его написания, установив PGDATA переменная окружения, что может быть удобно, поскольку сервер базы данных (Postgres) может найти каталог базы данных позже с помощью той же переменной.

Я использую Ubuntu 10.04 и PostgreSQL 8.4. Вот что я сделал, чтобы переместить мою папку pgdata из корневого раздела, в основном на основе инструкции от linuxquestions.org.

  1. cd /mnt/workspace чтобы попасть в папку, я хочу сохранить новую папку pgdata.
  2. ls -l .. чтобы убедиться, что workspace папка принадлежит корню.
  3. grep data_directory /etc/postgresql/8.4/main/postgresql.conf чтобы увидеть, где находится текущий каталог данных. В моем случае это было /var/lib/postgresql/8.4/main.
  4. sudo /etc/init.d/postgresql-8.4 stop чтобы остановить службу.
  5. sudo mv /var/lib/postgresql/8.4/main /mnt/workspace/pgdata , чтобы переместить папку с данными в новое место.
  6. ls -l чтобы убедиться, что pgdata папка по-прежнему принадлежит пользователю postgres.
  7. Я редактировал /etc/postgresql/8.4/main/postgresql.conf файл, чтобы указать data_directory запись на новом месте.
  8. sudo /etc/init.d/postgresql-8.4 start для запуска службы.
  9. Попробуйте подключиться к серверу базы данных, чтобы убедиться, что он по-прежнему работает.
  10. df чтобы узнать, сколько свободного места у меня теперь есть в корневом разделе. Woot!

Файлы, описывающие кластер по умолчанию, называемый main, находятся в каталоге /etc/postgresql/8.4/main для 8.4 на моем компьютере с ubuntu 10.10. Просто остановите postgresql, скопируйте каталог данных в новый каталог, установите perms (700 в корневом каталоге и принадлежат пользователю postgres), отредактируйте строку в postgresql.conf, которая указывает на ваш каталог данных, и перезапустите postgres.