![]() |
![]() |
![]() |
Инициализация файловой системы Перед созданием базы данных в кластере необходимо предварительно выполнить инициализацию файловой системы. В PostgreSQL это можно сделать двумя способами: либо, как при установке PostgreSQL, воспользоваться приложением initdb для создания нового кластера (см. главу 2), либо создать вторичный каталог данных при помощи приложения initlocation. Кластер представляет собой несколько взаимосвязанных баз данных. Один экземпляр процесса postmaster в любой момент времени работает только с одним кластером. При помощи приложения initlocation можно создать базы данных, принадлежащие существующим кластерам, но хранящиеся в других каталогах данных. Инициализация кластера баз данных Программа initdb создает и инициализирует новый кластер баз данных в файловой системе. Как говорилось выше, кластер баз данных представляет собой организационную структуру, в которой создаются базы данных. В системе уже должен существовать кластер в каталоге данных, инициализация которого была описана в главе 2. Вы можете инициализировать новый каталог данных для кластера при помощи приложения initdb и затем распорядиться, чтобы процесо postmaster использовал этот кластер вместо принятого по умолчанию. Два одновременно работающих процесса postmaster могут использовать разные кластеры, но при этом они должны быть настроены на прослушивание разных портов. После создания нового кластера приложением initdb файловая система этого кластера будет принадлежать пользователю операционной системы, запустившему приложение. ВНИМАНИЕ Не запускайте программу initdb с правами root! Обычный пользователь, создавший кластер, становится владельцем нового кластера, то есть его суперпользователем. Программа initdb также может исправить поврежденную базу данных template 1, для чего она запускается с ключом -t (или - -template). В этом случае база данных template 1 строится заново. Синтаксис команды запуска программы initdb: Initdb [ -D каталог \ --pgdata=Karanor ] [ -1 sysid | --sysid=sysid ] [ -W | --pwprompt ] t -E кодировка | --еncoding=кодировка ] [ -L каталог \ --pglib=каталог ] [ -n | --noclean ] [ -d | --debug ] С -t I --template ] Ключи initdb описаны ниже.
В случае успешного завершения команда initdb создает кластер баз данных в заданном каталоге. Созданный кластер может использоваться PostgreSQL для хранения баз данных. В листинге 9.7 приведен пример инициализации кластера в каталоге /usr/local/ psql/booktown. Листинг 9.7. Инициализация нового кластера [postgres@booktown -]$ initdb /usr/local/pgsql/booktown This database system will be initialized with username "postgres". This user will own all the data files and must also own the server process. Creating directory /usr/local/pgsql/booktown Creating directory /usr/local/pgsql/booktown/base Creating directory /usr/local/pgsql/booktown/global Creating directory /usr/local/pgsql/booktown/pg_xlog Creating tempiatel database in /usr/local/pgsql/booktown/base/1 DEBUG: database system was shut down at 2001-08-27 16:51:07 PDT DEBUG: Checkpoint record at (0. 8) DEBUG: Redo record at (0, 8); Undo record at (0. 8): Shutdown TRUE DEBUG: Next Transaction: 514: NextOid: 16384 DEBUG: database system is in production state Creating global relations in /usr/local/pgsql/booktown/global DEBUG: database system was shut down at 2001-08-27 16:51:14 PDT DEBUG: Checkpoint record at (0. 108) DEBUG: Redo record at (0. 108): Undo record at (0. 0): Shutdown TRUE DEBUG: NextTransactionld: 514: NextOid: 17199 DEBUG: database system is in production state Initializing pg_shadow. Enabling unlimited row width for system tables. Creating system views. Loading pg_description. Setting lastsysoid. Vacuuming database. Copying tempiatel to tempiateO. Success. You can now start the database server using: /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/booktown or /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/booktown -1 logfile start Инициализация вторичного каталога Если вы не хотите создавать новый кластер, а всего лишь хотите переместить базу данных в другой каталог, воспользуйтесь программой initlocation. Эта программа создает каталоги, необходимые для вторичного хранения баз данных. За дополнительной информацией о создании баз данных во вторичных каталогах обращайтесь к разделу «Создание и удаление баз данных» этой главы. Синтаксис команды initlocation: initlocation каталог Параметр каталог содержит путь к новому вторичному каталогу. Команда i ni tl ocation должна выполняться пользователем, запустившим процесс postmaster, чтобы он имел необходимые права для созданного каталога. В листинге 9.8 приведен пример инициализации вторичной области хранения баз данных в каталоге /usr/local/pgsql/booktown2. Листинг 9.8. Инициализация вторичного каталога [postgres@booktown -]$ initlocation /usr/local/pgsql/booktown2 |
![]() |
![]() |
![]() |