postgresql 启动与停止操作

启动和停止数据库服务器

service 方式

service postgresql-10 start
service postgresql-10 stop
service postgresql-10 status

pg_ctl 方式

pg_ctl start -D [ data 所在路径 ]
pg_ctl stop -D [ data 所在路径 ]

三种形式:-m 指定模式

smart 模式:会等待活动的事务提交结束,并等待客户端主动断开连接之后关闭数据库服务

fast 模式:会回滚所有的活动的事务,并强制断开客户端的连接然后关闭数据库(默认就是使用fast 相当于Oracle 中的 immediate模式关闭)

immediate 模式: 会立即终止所有服务器进程,当下一次数据库启动的时候会首先进入恢复状态( 相当于使用 kill 工具杀死进程[此方式不会干净的关闭数据库且会造成数据丢失] )

pg_ctl status -D [ data 所在路径 ]

使用 postmaster postgres 程序启动数据库

/usr/pgpsql-10/bin/postgres -D [ data 所在路径 ]
kill -sigterm `head -1 /usr/pgpsql-10/data/postmaster.pid`

如果要在操作系统启动时就启动PG,可以在/etc/rc.d/rc.local 文件中加以下语句:

/usr/pgsql-10/bin/pg_ctl start -l /usr/pgsql-10/log/pg_server.log -D/usr/pgsql-10/data

补充:postgresql 服务无法启动,日志中报如下错误

1、postgresql 服务无法启动,日志中报如下错误,磁盘空间足够。

无法找到来自源 PostgreSQL 的事件 ID 0 的描述。本地计算机上未安装引发此事件的组件,或者安装已损坏。可以安装或修复本地计算机上的组件。

1、使用pg_controldata 查找 nextoID 和 nextXID

2、重置事物日志

pg_resetxlog -o nextOID -x NextXID -f pgdata的目录

重启数据库即可启动 ,优麒麟重启数据库: service postgresql restart

C:\ParkServer\pgsql\bin>pg_controldata.exe –help pg_controldata

显示 PostgreSQL 数据库簇控制信息.

使用方法:

选项: [-D] DATADIR 数据目录 -V, –version 输出版本信息,然后退出

?, –help 显示帮助信息,然后退出

如果没有指定数据目录(DATADIR), 将使用 环境变量PGDATA.

报告错误至 pgsql-bugs@postgresql.org.

C:\ParkServer\pgsql\bin>pg_controldata.exe -D c:\ParkServer\pgsql\data

备注:

cd /usr/lib/postgresql/9.5/bin 下有pg_controldata pg_resetxlog

locate pg_controldata 可以全系统搜索

sudo su postgres 才能访问 /var/lib/postgresql/9.5/main

/etc/postgresql/9.5/main 下查看postgresql.conf 文件data目录

cd /var/log/postgresql 可以查看数据库的日志

tail -f /var/log/syslog
Insecure directory in $ENV{PATH} while running with -T switch at /usr/bin/pg_ctlcluster line 463.

echo $PATH

查看所有路径的权限,权限太大的,都要改小

chmod 755 /usr
chmod 755 /bin
chmod 755 /sbin
chmod 755 /snap

sudo service postgresql start

即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。


数据运维技术 » postgresql 启动与停止操作