服务管理
服务的启停和创建
直接运行 postgres进程启动;
- postgr es - D /home/osdba/pgdata &
使用 pg_ctl命令启动
- pg_ctl -D /home/osdba/pgdata start
直接向 运行 postgres 主进程发送 signal信号,停止数据库;
- SIGTERM:发送此信号为 SmartShutdown关机模式
- SIGINT:发送此信号为 FastShutdown关机模式。
- SIGQUIT:发送此信号为 Immediate Shutdown 关机模式
使用pg_ctl命令停止数据库
- pg_ctl stop -D DATADIR -m smart
- pg_ctl stop -D DATADIR -m fast
- pg_ctl stop -D DATADIR -m immediate
pg_ctl
-
功能
- 初始化 PostgreSQL数据库实例
- 启动 、终止或重启 PostgreSQL数据库服务
- 查看 PostgreSQL数据库服务的状态
- 让数据库实例重新读取配置文件
- 许给一个指定的进程发送信号
- 在 Windows平台下允许为数据库实例注册一个系统服务或取消这个系统服务
-
pg_ctl init[db] [-s] [-D datadir] [-o options]
- -S:只打印错误和警告信息,不打印提示性信息
- -D datadir:指定数据库实例的数据 目录
- ooptions:为直接传递给 initdb命令的参数,具体可见 initdb命令的帮助
-
pg ctl start [-w) [-t seconds ) [-s ) [- D datadir) [- 1 filename) [-o options) [- p path) [-cl
1、start:启动数据库实例 。
2、-w:等待启动完成。
3、-t:等待启动完成的等待秒数,默认为 60秒。
4、-s:只打印错误和警告信息,不打印提示性信息 。
5、-D datadir:指定数据库实例的数据目录 。
6、-l:把服务器日志输出附加在“ filename,,文件上,如果该文件不存在则创建它 。
7、-o options:声明要直接传递给 postgres 的选项,具体可见 postgres命令的帮助 。
8、-p path :指定 postgres可执行文件的位置。默认情况下 postgres可执行文件来自和 pg_ctl相同的目录,不必使用该选项。除非要进行一些不同寻常的操作,或者产生了postgres 执行文件找不到的错误 。
9、-C :提高服务器的软限制( ulimit -c) 尝试允许数据库实例在有异常时产生一个 coredump 文件,以便于问题定位和故障分析。 -
pg ctl stop [-W) [-t seconds) [-s) [一D datadir) [-m s[mart) I f[ast) I i [mmediate) )
1、-W:不等待数据库停下来,命令就返回
2、-m:指定停止的模式 。 前面已叙述过停止的几种模式了 。
3、未说明的参数,其含义与启动数据库命令中的参数相同 。 -
重启:pg ctl restart [-w) [-t seconds) [-s) [-D datadir) [-c) [-m s[mart) I f[ast) I i[mmediate) ] [-o ·options)
-
重新读取配置文件:pg_ctl reload [- s] (-D datadir]
pg ctl reload - D /home/osdba/pgdata
-
查询数据库实例状态:pg_ctl status (-D datadir]
信号
1、SIGTERM: Smart Shutdown关机模式
2、SIGINT : Fast Shutdown 关机模式
3、SIGQUIT: Immediate Shutdown关机模式
发送 SIGHUP 命令会让服务器重新装载配置文件,使用 “ pg_ctl reload”命令和直接调用 函数“ pg_reload_conf()”,其本质也是发送 SIGHUP 给服务主进程 。
直接发送 SIGINT命令给数据库服务进程,会导致此服务进程正在执行的 SQL 被取消, 这与调用函数“ pg_cancel_backend”的效果相同 。 而发送 SIGTERM 信号给数据库服务进程, 同调用“ pg_terminate_backend”函数的效果也是一样的 。
postgres 及单用户模式
常用管理命令
查看系统信息
-
查看版本
- select version();
-
查看数据库启动时间
- select pg_postmaster_start_time();
-
查看最后load配置文件的时间
- select pg_conf_load_time();
-
使用pg_ctl_reload改变配置的装载时间
- pg_ctl_reload
-
查看当前数据库时区
- show timezone;
-
查看当前用户
- select user; select current_user;
-
查看session 用户
-
select session_user;
通常情况下“session_user”与user相同;但当用命令“set role”改变用户的角色时,这两者就不相同了:
set role u01;select session_user;
osdbaselect user;
u01
-
-
查看session及服务器IP,port
- select inet_client_addr(), inet_client_port(), inet_server_addr(), inet_server_port();
-
查询后台进程号
- select pg_backend_pid(); ps -ef | grep $pid |grep -v grep
-
查看当前wal文件
-
select pg_xlogfile_name(pg_current_xlog_location());
查看当前WAL 的buffer 中还有多少字节的数据没有写入磁盘:
select pg_xlog_location_diff(pg_current_xlog_insert_location(), pg_current_xlog_location());
-
-
查看数据库实例是否在做备份
- select pg_is_in_back(), pg_back_start_time();
-
查看当前数据库实例是Hot Standby还是正常数据库状态
- select pg_is_in_recovery();
-
查看对象大小
- 表:select pg_size_pretty(pg_relation_size(‘pgdb2’));
- 包含索引:select pg_size_pretty(pg_total_relation_size(‘pgdb2’));
- 索引:select pg_size_pretty(pg_indexs_size(‘pgdb2’));
- select pg_database_size(‘osdba’), pg_size_pretty(pg_database_size(‘osdba’));
系统维护
-
配置postgresql_conf,生效
- pg_ctl reload
- select pg_reload_confg();
-
切换log日志
- select pg_rotate_logfile();
-
切换WAL日志
- select pg_switch_xlog();
-
手工checkpoint
- checkpoint;
-
取消长sql
方法:
查看pg_stat_activity,找出长sql:
select pig,username,query_start,query from pg_stat_activity;
pg_cancel_backend取消
select pg_cancel_backend(pid);
如无法取消,使用pg_terminate_backend中止
select pg_terminate_backend(pid);- pg_cancel_backend(pid);
- pg_terminate_backend(pid);
服务配置介绍
查询参数值
- 查询枚举:select enumvals from pg_settings where name =『 client_min_messages ’;
- 查询单位:select unit f rom pg_settings where name = ’ atitovacuum_vacuum_cost_delay ’ ;
- 查询参数描述:select short desc,extra desc from pg settings where name =’autovacuum vacuum cost del ay’;
参数类型
-
internal :这些参数是只读参数;
- postgres程序写死
- 用一 些不同的编辑选项确定的
- 数据库实例初始化时就确定
- 这类参数值不能配置在 postgresql.conf 中,因为它们是由 postgres程 序和在初始化实例时写死的
-
postmaster :改变这些参数 的值需要重启 PostgreSQL 实例
- 在 postgresql.onf文件中改变这些参数后,需要重启 PostgreSQL实例才能生效
-
sighup :在 postgresql.onf文件中可改变这些参数的值
- 不需要重启数据库,只需要向 postmaster进程发送 SIG皿JP 信号,让其重启装载配置新的参数值就可以了
- postmaster进程接收到 SIGHUP信号后,也会向它的子进程发送 SIGHUP信号,让新 的参数值在所有的进程中都生效
-
backend :在 postgresql.conf更改这些设置元须重新启动 服务器
- 需要 postmaster 发送一个 SIGHUP信号,让它重新读取 postgresql.conf中新的配置值即可
- 新的 配置值只会出现在这之后的新连接中,在已有的连接中,这些参数的值不会改变
- 这些参数的值也可以在新建连接时,由连接的一些参数改变
-
superuser :这类参数可以由超级用户使用 set来改变
- 超级用户改变此参数值时,只会影响自身的 sesssion配置,不 会影响其他用户
- postmaster进程发送 SIGHUP 信号,也只会影响后续建的连接, 不会影响现有的连接
-
user : 普通用户可使用 set命令通过此类参数来改变本连接中的配置值
- 除了普通用 户都可以改变外,这类参数与 superuser类参数没有区别
-
查询参数类型
- select name,context from pg_settings where name like ’wal_buffers’;
连接配置项
-
listen_addresses : string类型 , 声明服务器监昕客户端连接的 TCP/IP地址,改变这个 参数需要重启数据库服务
- “0.0.0.0”,它与“*" 允许任何IP的链接
- 由逗号分隔的多个 IP地址值或 四 地址值对 应的主机名组成的一个列表
- 默认值是“ localhost”,表示只允许本地使 用“ loopback”连接到数据库,其他机器无法连接到
-
port: integer类型,指定服务器监昕的TCP端口, 默认为5432;更改需要重启
- 注意同一个端口号用于服务器监昕的所有 IP地址
-
max_connections : integer类型, 允许和数据库连接的最大并发连接数。更改需要重启数据库服务
- 默认值通常是 100,但是如果内核设置不支持这么大的值 (在 国tdb时判断), 可能就会小于 100
- 参数只能在服务器启 动的时候设置
- 增大这个 参数可能会让 PostgreSQL 申请更多的 SystemV共享内存或信号灯,这可能会因为超过操 作系统默认配置值而导致实例无法启动
- 运行 HOT Standby备服务器时,这个参数必 须大于等于主服务器上的参数, 否则 HOTStandby备服务器上可能无法进行查询操作
-
superuser_reserved_connections : integer类型, 决定为 PostgreSQL超级用户连接而保 留的连接数
- 需要重启数据库服务。 默认值是 3
- 普通用 户最多建 max_connections-superuser_reserved_connections个连接后,就不再允许连接了
- 这个值必须小于 max connections的值
-
unix_socket_directory : string类型, 声明服务器监昕客户端连接的 UNTX域套接字目 录 。
- 只能在编译时修改;默认通常 是/tmp
- 在目录下创建.s.PGSQL.nnnn, .s.PGSQL.nnnn.lock ( nnnn 是服 务器的端口号)的文件,这两个文件都不应被手动删除
-
unix_socket_group: string类型 , 设置 UN以 域套接字的所属组(套接字的所属用户总 是启动服务器的用户)
- 需要重启数据库服务;只能在服务器启动时设置
- 默认是一个空字符串 , 表示启动服务 器的用户所属的默认组
-
unix_socket_permissions: integer类型 , 设置 UnIX域套接字的访问权限
- 改变这个参 数需要重启数据库服务
- 默认的权限是 0777,任何人都可以连接。 通常合理的设置也可能是 0770 (只有用户和同组的人可以访问)和 0700 (只有用户自己 可以访问)
- 对于山以域套接字,只有写权限有意义,读和执行权限 没有任何意义
-
bonjour : boolean类型, bonjour也称为零配置联网,是苹果电脑公司的一个服务器搜 索协议,此参数表示是否让 Bnjour搜索到 PostgreSQL服务;改变这个参数需要重启 数据库服务。 默认值是o旺。
-
bonjour_name: string类型,声明 Bonjour服务名称 。 改变这个参数需要重启数据库服 务。 默认值为空字符串 ,表示使用本机名 。 如果编译时没有打开 Bonjour,那么将忽 略这个参数 。
-
tcp_keepalives_idle : integer类型,表示在一个 TCP连接中空闲多长时间后会发送一 个 keepalive报文。 默认值为 0
关机模式
Smart Shutdown : 智能关机模式。 在接受此关机请求后 ,服务器将不允许有新连接,并且会等 已有的连接全部结束后 , 才关闭数据库
Fast Shutdown :快速关闭模式 。 不再允许有新的连接,向所有活跃的服务进 程发送 SIGTERM信号,让它们立刻退出,然后等待所有子进程退出并关闭数据库
Immediate Shutdown :立 即关闭模式 。 主进程 postgres 向所有子进程发送 SIGQUIT 信 号,并且立即退出,所有的子进程也会立即退出
PG从小工到专家学习笔记-服务管理,请参考文档:PG从小工到专家学习笔记-服务管理.pdf




