Запуск и завершение PostgreSQL
Запуск PostgreSQL в приложении pg_ctl
Чтобы запустить серверный процесс PostgreSQL postmaster, передайте pg_ctl ключ start. Помните, что приложение pg_ctl должно запускаться пользователем postgres (или другим пользователем, которому принадлежит каталог данных PostgreSQL).
В листинге 9.1 приведен пример запуска postmaster с каталогом данных /usr/ local/pgsql/data. СУБД успешно запускается, выдает время последнего завершения работы базы данных и отладочную информацию, после чего пользователь postgres возвращается к приглашению командного интерпретатора.
Листинг 9.1. Запуск PostgreSQL в приложении pg_ctl.
[postgres@booktown – ]$ pg_ctl – D /usr/1oca!/pgsql/data start postmaster successfully started DEBUG: database system was shut down at 2001-09-17 08:06:34 POT DEBUG: Checkpoint record at (0. 1000524052) DEBUG: Redo record at (0. 1000524052): Undo record at (0. 0): Shutdown TRUE DEBUG: NextTransactionld: 815832: NextOid: 3628113 DEBUG: database system is in production state [postgres@booktown – ]$
Завершение PostgreSQL в приложении pg_ctl
Серверный процесс PostgreSQL postmaster можно остановить той же программой pg_ctl, которой он был запущен. Приложение pg_ctl проверяет Наличие работающего процесса postmaster, и если команда stop была выдана владельцем работающего процесса (например, пользователем postgres), сервер PostgreSQL прекращает работу.
Существуют три режима завершения серверного процесса PostgreSQL: интеллектуальный (smart), ускоренный (fast) и немедленный (immediate). Режим завершения задается ключом – т при вызове pg_ctl.
В интеллектуальном режиме (используемом по умолчанию) PostgreSQL перед завершением ждет, пока все клиенты отключатся от сервера. В ускоренном режиме PostgreSQL просто начинает стандартную процедуру завершения, не проверяя состояние клиентских подключений. В немедленном режиме стандартная процедура завершения пропускается, и при последующем перезапуске система должна пройти через режим восстановления.
Внимание
Никогда не завершайте процесс postmaster командой kill – 9 (kill – KILL), что приводит к потере или порче данных.
В листинге 9.2 сценарий pg_ctl завершает процесс postmaster в ускоренном режиме. Процесс postmaster прекращает работу, не дожидаясь отключения клиентов.
Листинг 9.2. Завершение PostgreSQL в приложении pg_ctl.
[postgres@booktown – ]$ pg_ctl – D /usr/local/pgsql/data stop – m fast Fast Shutdown request at Mon Sep 17 09:23:39 2001 DEBUG: shutting down waiting for postmaster to shut down….. DEBUG: database system is shut down done postmaster successfully shut down [postgres@booktown – ]$
Примечание
Завершение в режиме smart эквивалентно команде kil I – TERM для процесса postmaster. Режим fast эквивалентен команде kill – INT, а аналогом режима immediate является команда kill – QUIT.