Запуск и остановка Greenplum
В Greenplum объекты сервера базы данных (мастер и все сегменты) запускаются или останавливаются на всех хостах системы таким образом, чтобы они могли работать вместе как единая СУБД.
Поскольку система Greenplum распределена по многим машинам, процесс запуска и остановки системы Greenplum отличается от процесса запуска и остановки обычной СУБД PostgreSQL.
Для запуска и остановки Greenplum Database используйте утилиты gpstart и gpstop соответственно. Эти утилиты находятся в каталоге $GPHOME/bin на мастер-хосте Greenplum.
Важно!
Не выполняйте команду kill для завершения какого-либо процесса Postgres. Вместо этого используйте команду базы данных pg_cancel_backend().
Выполнение команд kill -9 или kill -11 может привести к повреждению базы данных и помешать проведению анализа причин этого повреждения.
Информацию о gpstart и gpstop см. в руководстве по утилитам для работы с базами данных Greenplum.
Запуск системы Greenplum
Запустите инициализированную систему Greenplum, запустив утилиту gpstart.
Утилита gpstart используется для запуска системы Greenplum, которая уже была инициализирована утилитой gpinitsystem, но остановлена утилитой gpstop. Утилита gpstart запускает Greenplum, запуская все экземпляры баз данных Postgres на кластере Greenplum Database. gpstart организует этот процесс и выполняет его параллельно.
Запустите gpstart на главном хосте для запуска Greenplum Database:
$ gpstart
Повторный запуск Greenplum
Остановите работу системы Greenplum, а затем перезапустите ее.
Утилита gpstop с опцией -r может остановить, а затем перезапустить Greenplum Database после завершения выключения.
Чтобы перезапустить Greenplum Database, введите на главном хосте следующую команду:
$ gpstop –r
Перезагрузка изменений в конфигурационных файлах
Перезагрузка изменений в конфигурационных файлах Greenplum Database без прерывания работы системы:
Утилита gpstop может перезагружать изменения в конфигурационном файле pg_hba.conf и параметры времени выполнения в главном файле postgresql.conf без прерывания работы системы. Активные сеансы получают изменения при повторном подключении к базе данных. Для активации многих параметров конфигурации сервера требуется полный перезапуск системы (gpstop -r). Информацию о параметрах конфигурации сервера см. в Справочном руководстве по базам данных Greenplum.
Перезагрузить изменения конфигурационных файлов без выключения системы Greenplum Database можно с помощью утилиты gpstop:
$ gpstop -
Запуск мастера в режиме обслуживания
Для выполнения задач обслуживания или администрирования, запускайте только мастера, не затрагивая данные на сегментах.
Режим обслуживания должен использоваться только по указанию службы технической поддержки VMware. Например, в режиме обслуживания можно подключиться к базе данных только на ведущем экземпляре и отредактировать настройки системного каталога. Дополнительные сведения о таблицах системного каталога см. в справочном руководстве по базам данных Greenplum.
Запустите программу gpstart с опцией -m:
$ gpstart -m
Подключитесь к мастеру в режиме обслуживания, чтобы выполнить обслуживание каталога. Например:
$ PGOPTIONS='-c gp_session_role=utility' psql postgres
После выполнения административных задач остановите мастер в режиме обслуживания. Затем перезапустите его в производственном режиме.
$ gpstop -m $ gpstart
Важно! Неправильное использование соединений в режиме обслуживания может привести к нерабочему состоянию системы. Данную операцию может выполнять только служба Технической поддержки.
Остановка Greenplum
Утилита gpstop останавливает или перезапускает систему Greenplum Database и всегда запускается на главном хосте. При активации утилита gpstop останавливает все процессы Postgres в системе. Утилита gpstop по умолчанию использует до 64 параллельных рабочих потоков для остановки экземпляров Postgres, входящих в кластер Greenplum Database. Перед завершением работы система ожидает завершения всех активных транзакций. Если по истечении двух минут активные соединения все еще остаются, gpstop предложит продолжить ожидание в интеллектуальном режиме, остановить в быстром режиме или остановить в немедленном режиме. Для немедленной остановки Greenplum используйте быстрый режим.
Важно Не рекомендуется использовать режим немедленной остановки. В этом режиме останавливаются все процессы базы данных, не позволяя серверу базы данных завершить обработку транзакций или очистить временные или рабочие файлы, находящиеся в процессе.
Чтобы остановить Greenplum Database, выполните следующие действия:
$ gpstop
Остановка Greenplum Database в быстром режиме:
$ gpstop -M fast
По умолчанию не разрешается останавливать Greenplum, если к базе данных есть клиентские соединения. Используйте опцию -M fast, чтобы откатить все выполняющиеся транзакции и завершить все соединения перед завершением работы.
Остановка клиентских процессов
Greenplumз апускает новый процесс бэкенда для каждого клиентского соединения. Пользователь Greenplum Database с привилегиями SUPERUSER может отменять и завершать эти клиентские backend-процессы.
Отмена процесса backend с помощью функции pg_cancel_backend() завершает определенный запрос клиента, находящийся в очереди или активный. Завершение процесса backend с помощью функции pg_terminate_backend() завершает клиентское соединение с базой данных.
Функция pg_cancel_backend() может быть представлена следующим образом:
pg_cancel_backend( pid int4 ) pg_cancel_backend( pid int4, msg text )
Функция pg_terminate_backend():
pg_terminate_backend( pid int4 ) pg_terminate_backend( pid int4, msg text )
Если Вы указываете msg, Greenplum Database включает этот текст в сообщение об отмене, возвращаемое клиенту. msg ограничен 128 байтами; все, что длиннее, Greenplum Database обрезает.
Функции pg_cancel_backend() и pg_terminate_backend() возвращают true в случае успеха и false в противном случае.
Чтобы отменить или завершить процесс backend, необходимо сначала определить идентификатор процесса backend. Идентификатор процесса можно получить из столбца pid представления pg_stat_activity. Например, для просмотра информации о процессе, связанном со всеми запущенными и поставленными в очередь запросами:
=# SELECT usename, pid, waiting, state, query, datnameFROM pg_stat_activity;
Образец частичного вывода запроса:
usename | pid | waiting | state | query | datname---------+----------+---------+--------+------------------------+---------sammy | 31861 | f | idle | SELECT * FROM testtbl; | testdbbilly | 31905 | t | active | SELECT * FROM topten; | testdb
Используйте вывод для определения идентификатора процесса (pid) запроса или клиентского соединения.
Например, для отмены ожидающего запроса, идентифицированного в приведенном выше примере, в качестве сообщения, возвращаемого клиенту, следует указать:
=# SELECT pg_cancel_backend(31905 ,'Admin canceled long-running query.');ERROR: canceling statement due to user request: "Admin canceled long-running query."




