Starting and Stopping LightDB-A Database
In a LightDB-A Database DBMS, the database server instances (the coordinator and all segments) are started or stopped across all of the hosts in the system in such a way that they can work together as a unified DBMS.
Because a LightDB-A Database system is distributed across many machines, the process for starting and stopping a LightDB-A Database system is different than the process for starting and stopping a regular PostgreSQL DBMS.
Use the gpstart
and gpstop
utilities to start and stop LightDB-A Database, respectively. These utilities are located in the $GPHOME/bin directory on your LightDB-A Database coordinator host.
Important Do not issue a
kill
command to end any Postgres process. Instead, use the database commandpg_cancel_backend()
.
Issuing a kill -9
or kill -11
can introduce database corruption and prevent root cause analysis from being performed.
For information about gpstart
and gpstop
, see the LightDB-A Database Utility Guide.
Parent topic: Managing a LightDB-A System
Starting LightDB-A Database
Start an initialized LightDB-A Database system by running the gpstart
utility on the coordinator instance.
Use the gpstart
utility to start a LightDB-A Database system that has already been initialized by the gpinitsystem
utility, but has been stopped by the gpstop
utility. The gpstart
utility starts LightDB-A Database by starting all the Postgres database instances on the LightDB-A Database cluster. gpstart
orchestrates this process and performs the process in parallel.
Run gpstart
on the coordinator host to start LightDB-A Database:
$ gpstart
Restarting LightDB-A Database
Stop the LightDB-A Database system and then restart it.
The gpstop
utility with the -r
option can stop and then restart LightDB-A Database after the shutdown completes.
To restart LightDB-A Database, enter the following command on the coordinator host:
$ gpstop -r
Reloading Configuration File Changes Only
Reload changes to LightDB-A Database configuration files without interrupting the system.
The gpstop
utility can reload changes to the pg_hba.conf configuration file and to runtime parameters in the coordinator postgresql.conf file without service interruption. Active sessions pick up changes when they reconnect to the database. Many server configuration parameters require a full system restart (gpstop -r
) to activate. For information about server configuration parameters, see the LightDB-A Database Reference Guide.
Reload configuration file changes without shutting down the LightDB-A Database system using the gpstop
utility:
$ gpstop -u
Starting the Coordinator in Maintenance Mode
Start only the coordinator to perform maintenance or administrative tasks without affecting data on the segments.
Maintenance mode should only be used with direction from VMware Technical Support. For example, you could connect to a database only on the coordinator instance in maintenance mode and edit system catalog settings. For more information about system catalog tables, see the LightDB-A Database Reference Guide.
Run
gpstart
using the -m option:$ gpstart -m
Connect to the coordinator in maintenance mode to do catalog maintenance. For example:
After completing your administrative tasks, stop the coordinator in maintenance mode. Then, restart it in production mode.
$ gpstop -m $ gpstart
Caution Incorrect use of maintenance mode connections can result in an inconsistent system state. Only Technical Support should perform this operation.
Stopping LightDB-A Database
The gpstop
utility stops or restarts your LightDB-A Database system and always runs on the coordinator host. When activated, gpstop
stops all postgres
processes in the system, including the coordinator and all segment instances. The gpstop
utility uses a default of up to 64 parallel worker threads to bring down the Postgres instances that make up the LightDB-A Database cluster. The system waits for any active transactions to finish before shutting down. If after two minutes there are still active connections, gpstop
will prompt you to either continue waiting in smart mode, stop in fast mode, or stop in immediate mode. To stop LightDB-A Database immediately, use fast mode.
Important Immediate shut down mode is not recommended. This mode stops all database processes without allowing the database server to complete transaction processing or clean up any temporary or in-process work files.
To stop LightDB-A Database:
$ gpstop
To stop LightDB-A Database in fast mode:
$ gpstop -M fast
By default, you are not allowed to shut down LightDB-A Database if there are any client connections to the database. Use the
-M fast
option to roll back all in progress transactions and terminate any connections before shutting down.
Stopping Client Processes
LightDB-A Database launches a new backend process for each client connection. A LightDB-A Database user with SUPERUSER
privileges can cancel and terminate these client backend processes.
Canceling a backend process with the pg_cancel_backend()
function ends a specific queued or active client query. Terminating a backend process with the pg_terminate_backend()
function terminates a client connection to a database.
The pg_cancel_backend()
function has two signatures:
-
pg_cancel_backend( pid int4 )
-
pg_cancel_backend( pid int4, msg text )
The pg_terminate_backend()
function has two similar signatures:
-
pg_terminate_backend( pid int4 )
-
pg_terminate_backend( pid int4, msg text )
If you provide a msg
, LightDB-A Database includes the text in the cancel message returned to the client. msg
is limited to 128 bytes; LightDB-A Database truncates anything longer.
The pg_cancel_backend()
and pg_terminate_backend()
functions return true
if successful, and false
otherwise.
To cancel or terminate a backend process, you must first identify the process ID of the backend. You can obtain the process ID from the pid
column of the pg_stat_activity
view. For example, to view the process information associated with all running and queued queries:
=# SELECT usename, pid, waiting, state, query, datname
FROM pg_stat_activity;
Sample partial query output:
usename | pid | waiting | state | query | datname
---------+----------+---------+--------+------------------------+---------
sammy | 31861 | f | idle | SELECT * FROM testtbl; | testdb
billy | 31905 | t | active | SELECT * FROM topten; | testdb
Use the output to identify the process id (pid
) of the query or client connection.
For example, to cancel the waiting query identified in the sample output above and include 'Admin canceled long-running query.'
as the message returned to the client:
=# SELECT pg_cancel_backend(31905 ,'Admin canceled long-running query.');
ERROR: canceling statement due to user request: "Admin canceled long-running query."