Глава 10. Управление диском

Дополнительные местоположения

Возможно создавать базы данных в местоположении, отличном от расположения установки по умолчанию. Помни, что весь доступ к базам данных на самом деле происходит через сервер базы данных, поэтому любое указанное местоположение должно быть доступно серверу.

Для создания и доступа к дополнительным расположениям баз данных используется переменная среды, которая задает абсолютный путь, где предполагается хранить данные. Эта переменная среды должна определяться перед запуском сервера и должна быть доступна для записи бюджету администратора postgres. Любое правильное имя переменной среды может использоваться как ссылка на дополнительное место хранения, хотя рекомендуется использовать имена с префиксом PGDATA во избежании беспорядка и конфликтов с другими переменными.

Замечание: В предыдущих версиях Postgres, также было разрешено использовать абсолютный путь для указания дополнительного местоположения. Стиль указания в переменной среды предпочтительнее, т.к. это дает администратору сайта большую гибкость в управлении дисковым пространством. Если ты предпочитаешь использование абсолютных путей, то ты можешь это делать, определив "ALLOW_ABSOLUTE_DBPATHS" и перекомпилив Postgres. Для этого, добавь строчку CLASS="PROGRAMLISTING" >#define ALLOW_ABSOLUTE_DBPATHS 1 в файл src/include/config.h, или укажи

 CFLAGS+= -DALLOW_ABSOLUTE_DBPATHS
     
в своем Makefile.custom.

Помни, что создание базы данных на самом деле выполняет сервер базы данных. Поэтому, любая переменная среды, указывающая дополнительное местоположение, должна определяться перед запуском сервера. Для определения дополнительного местоположения PGDATA2, указывающей на /home/postgres/data, во-первых, набери

% setenv PGDATA2 /home/postgres/data
    
что определит переменную среды для дальнейшего использования в командах. Обычно, эту переменную определяют в .profile суперпользователя Postgres или в файле инициализации .cshrc, чтобы обеспечить ее определение при загрузке системы. Можно использовать любую переменную среды для указания дополнительного местоположения, хотя предпочтительней, чтобы переменные начинались с "PGDATA" для устранения беспорядка и возможных конфликтов с перезаписью других переменных.

Чтобы создать область хранения данных в PGDATA2, обеспечь существование /home/postgres и разрешение на запись администратору postgres. Затем, в командной строке набери

% setenv PGDATA2 /home/postgres/data
% initlocation $PGDATA2
Creating Postgres database system directory /home/postgres/data

Creating Postgres database system directory /home/postgres/data/base

    

Чтобы проверить новое местоположение, создай базу данных test, набрав

% createdb -D PGDATA2 test
% dropdb test