pgsql如何重启

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pgsql如何重启
正常情况下,pgsql 停⽌可以执⾏⼀下命令:
bin/pg_ctl stop -s -D pg_data/ -m fast
此命令和 kill -15 PID 效果相同
但是有时候 pgsql 也会抽风,⽆法通过正常的⽅式停⽌,这个时候我们就需要暴⼒拆解了
kill -9 PID ⼤法,没有什么进程是可以抵抗的(除了⽤户权限不对外,基本是遇神杀神,遇佛杀佛哦)
但是kill -9 这个⽅式太暴⼒,导致pgsql 在下次启动时,会爆出乱七⼋糟的错误
例如 PID 已存在的问题
FATAL: pre-existing shared memory block (key 4432001, ID 1245189) is still in use
HINT: If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "post
master.pid".
解决⽅式是将 pg_data/postmaster.opts 和 pg_data/postmaster.pid 两个⽂件删除
因为pgsql 在启动时,会去检测是否存在这两个⽂件
另外在kill -9 强杀进程时,有时候也会误伤数据库的⽇志⽂件,这个时候,就会出现以下的问题
LOG: database system was interrupted; last known up at 2016-03-2310:55:25 CST
LOG: invalid record length at 0/1A97600
LOG: invalid primary checkpoint record
LOG: invalid record length at 0/1A97598
LOG: invalid secondary checkpoint record
PANIC: could not locate a valid checkpoint record
LOG: startup process (PID 2348) was terminated by signal 6: Aborted
LOG: aborting startup due to startup process failure
解决⽅式如下
bin/pg_resetxlog -f pg_data/
这个命令应该是恢复pgsql 的⽇志,有可能会造成pgsql ⾥⾯的数据丢失或者损坏,但是你在kill -9 时就应该了解这个风险。

否则呢,你就⾃⼰想明⽩为啥不能 kill -15 吧。

相关文档
最新文档