postgresql 启动与停止操作
作者:Yunis_Du
启动和停止数据库服务器
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
即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。