Перше, що треба зробити після установки PostgreSQL на комп'ютер - це створити новий кластер баз даних. У термінах Postgresql - кластер баз даних це набір баз. які управляються одним екземпляром сервера. Один екземпляр PostgreSQL може запускати і контролювати набір баз даних, які ізольовані один від одного, але обслуговуються через один і той же сокет TCP / IP або UNIX.
Обмежень за кількістю запущених екземплярів PostgreSQL, крім обмежень накладаються доступними ресурсами системи і кількістю вільних гнізд.
Процес створення кластера баз даних складається з створення директорії, де будуть зберігатися дані, створення спільних таблиць (shared catalog tables) (таблиці, які відносяться до всього кластеру, а не до будь-якої конкретної базі), створення бази-шаблону template1 (взагалі- то створюються дві шаблонні бази: template1 і template0. template0 виступає в якості дублюючої копії для template1, в разі, якщо остання буде зруйнована) і службової бази postgres.
Таким чином кластер використовує файлову систему для зберігання всіх баз і їх даних: є головна директорія (індивідуальна на кластер), що складається з декількох піддиректорій, по одній на кожну базу, які, в свою чергу, зберігають всі об'єкти в базі (таблиці, генератори послідовностей і т.п.).
initdb - створення нового PostgreSQL кластера баз даних
initdb [option ...] [-pgdata | -D] directory
Команда initdb повинна виконуватися від імені користувача, під яким буде запускатися сервер, тому що йому необхідний повний доступ до файлів і тек, створюваним initdb. Сервер не може запускатися від імені суперкористувача, тому виконання команди initdb від його особи буде відхилено.
initdb инициализирует локалі і кодування баз даних кластера, які будуть використовуватися за замовчуванням. Кодування, порядок сортування (LC_COLLATE), класи наборів символів (LC_CTYPE, наприклад, верхній, нижній, цифра) можуть встановлюватися окремо при створенні нової бази даних. initdb визначає настройки для шаблону template1, які будуть застосовуватися за замовчуванням для нових баз.
Щоб змінити порядок сортування за замовчуванням або класи наборів символів, використовуються опції -lc-collate і -lc-ctype. Порядок сортування, що відрізняється від C або POSIX, впливає на продуктивність. Тому необхідно ретельно вибирати необхідну і достатню локаль при виконанні initdb.
Для зміни кодування за замовчуванням використовується опція -encoding.
-A authmethod
-auth = authmethod
Опція вказує на метод аутентифікації локальних користувачів, що використовується в файлі pg_hba.conf (рядки host і local). trust використовується за умовчанням для полегшення процесу установки.
-D directory
-pgdata = directory
Опція вказує директорію зберігання кластера. Це єдина опція, обов'язкова для команди initdb. Але і її можна не використовувати, а вказати у змінній оточення PGDATA, що буде зручним при подальшому використанні (postgres звертається до цієї ж змінної).
-E encoding
-encoding = encoding
Встановлює кодування шаблону баз даних за замовчуванням, якщо не вказати інше при їх створенні. За замовчуванням встановлюється виходячи з зазначеної локалі.
Вказує на необхідність перевірки системою введення / виведення контрольних сум сторінок для виявлення пошкоджених даних, тому що за замовчуванням перевірка не проводиться. Включення перевірки може в значній мірі вплинути на продуктивність. Встановлюється на етапі розгортання кластера, і далі не може бути змінена. Коли перевірка включена, проводиться обчислення контрольних сум для всіх об'єктів всіх баз даних кластера.
Встановлює локаль кластера за замовчуванням. Якщо прапор не вказаний, локаль встановлюється згідно оточенню, в якому виповнюється команда initdb.
-lc-collate = locale
-lc-ctype = locale
-lc-messages = locale
-lc-monetary = locale
-lc-numeric = locale
-lc-time = locale
Вказує initdb прочитати пароль суперкористувача БД з файлу. В якості пароля використовується перший рядок файлу
-U username
-username = username
Встановлює ім'я суперкористувача кластера. За замовчуванням використовується ім'я користувача, від якого був запущений initdb.
Вказує initdb на необхідність запросити пароль для суперкористувача. Якщо не хочете використовувати аутентифікацію за паролем - ця опція Вам не потрібна. В іншому ж випадку не зможете використовувати аутентифікацію за паролем до тих пір поки не поставите пароль.
-X directory
-xlogdir = directory
Ця опція визначає каталог де буде зберігатися лог транзакції
Інші рідше використовуються опції описані тут:
Роздруковує зневаджувальної і деяку додаткову інформацію при початковій роботі завантажувача. Завантажувач це додаток initdb, що використовується для створення каталогу таблиць.
Вказує initdb, де необхідно шукати вхідні файли для розгортання кластера. Зазвичай це не потрібно. Додаток саме запросить ці дані, якщо буде необхідно.
За замовчуванням, при виявленні помилки на етапі розгортання кластера, initdb видаляє всі файли, які до того моменту були створені. Опція запобігає очищення файлів для цілей налагодження.
Виводить версію initdb і зупиняється.
Показує допомогу по аргументам команди initdb і зупиняється.
Вказує директорію зберігання даних кластера, можна змінити опцією -D.
Вказує тимчасову зону кластера за замовчуванням. Значення це повне ім'я тимчасової зони.
І на завершення - initdb можна виконати і командою pg_ctl initdb.
Ще по темі PostgreSQL