PostGreSql运维操作
对PostGreSql进行运维操作时,必须切换到postgres用户(也可以切换到其他管理员用户)
1.PostGresql启停等运维
进入postgresql的bin目录下
启动命令
./pg_ctl start -D pg的data文件夹所在目录
一、启停方法
两种方法
1、直接运行postgres进程启动;
2、使用pg_ctl命令启动
postgres -D /home/osdba/pgdata &
二、停止数据库的三种模式
smart shutdown:智能关机模式。不接受新的连接,且等已有连接全部结束后,关闭数据库。
fast shutdown:快速关闭模式,不允许有新的连接,向所有活跃的服务进程发送sigterm信号,让 他们立刻退出,然后等所有子进程结束并关闭数据库。如果数据库正处于备 份状态,立刻终止备份。
immediate shutdown: 立即关闭模式,所有进程立即退出,并不会妥善关闭数据库系统,下次启动时数据库会重放WAL日志进行恢复。紧急时使用。
sigterm : 此信号smart shutdown关机模式
sigint : fast shutdown关机模式
sigquit : immediate shutdown关机模式
pg_ctl stop -D datadir -m smart
pg_ctl stop -D datadir -m fast
pg_ctl stop -D datadir -m immediate
二、pg_ctl功能
1、初始化postgresSQL数据库实例。
2、启动、终止或重启
3、查看服务状态
4、让数据库实例重新读取配置文件
初始化postgresql数据库实例命令:
pg_ctl init[db] [-s] [-D datadir] [-o options]
-s 只打印错误和警告信息
-D datadir:指定数据库实例的数据目录
-o options:为直接传递给initdb命令的参数,具体可见initdb 命令的帮助。
-c 提高服务器的软限制(ulimit -c),尝试允许数据库实例在异常时产生一个coredump文件,以便于问题定位和故障分析。
pg_ctl start -w -D /home/osdba/pgdata
三、启动postgresSQL 数据库的命令如下:
pg_ctl start [-w] [-t seconds ] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
-w 等待启动完成。
-t 等待启动完成的秒数 默认60s
-s 只打印错误和警告信息,不打印提示性信息。
-D datadir:指定数据库实例的数据目录。
-l 把服务器日志输出附加在 filename 文件上,不存在则创建。
-o options: 声明要直接传递给postgres的选项
-p path:指定postgres可执行文件的位置。默认执行文件和pg_ctl相同目录。
四、停止postgresql数据库命令如下:
pg_ctl stop [-w] [-t seconds] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
-W 不等数据库停下来,命令就返回
-m 指定停止模式
五、让数据库实例重新读取配置文件的命令如下:
pg_ctl reload [-s] [-D datadir]
六、查询数据库实例状态的命令:
pg_ctl status [-D datadir]
2.PostGreSQL 连接数过多解决
问题原因,超过PG库设置的最大连接数(默认是100)
解决方案,在在postgresql.conf(pg对应的data目录下)中设置:
修改max_connections = 1000
想要此配置文件生效需要重启PG库。
在安装目录的bin目录下,能看到pg_ctl
以数据库管理员身份运行
./pg_ctl restart -D pg的data目录
然后就可以生效啦
查看当前最大连接数以及相关信息
show max_connections;
SELECT COUNT(*) from pg_stat_activity;
select min_val, max_val from pg_settings where name='max_connections';