首页 >> 大全

Postgresql9.1.2意外删除postmaster.pid文件的恢复

2023-09-30 大全 27 作者:考证青年

起因是我修改了参数,然后 ,然后报错 : PID file “//xjwq/1953///.pid” does not exist

这时才发现.pid不在,那我们就重构一个吧。

1. 首先看一下.pid文件的内容:

cd $PGDATA     
cat postmaster.pid
4188   //postgresql主进程号
/pgdata/xjwq/1953/data02/pg_root
1585846709
1953
/pgdata/xjwq/1953/data02/pg_root
0.0.0.01953001    4227076

错误删除文件恢复_误删数据库数据恢复_

2. 分别对内容做一下解释,以及在文件删除后,如何重建

1.查看进程号可见为4188
ps -elf | grep  "postgres -D"
0 S postgres  4188     1  0  75   0 - 324843 -     Apr02 ?        00:01:16 /opt/pgsql/bin/postgres -D /pgdata/xjwq/1953/data02/pg_root -p 19532.数据库目录,也就是$PGDATA,这里是/pgdata/xjwq/1953/data02/pg_root3.文件创建时间,可以模糊认为是进程启动时间,即4188启动的时间,这里是epoch时间,需要转换,可以通过以下命令取到,时间为16:58:29 2020,然后去转换为epoch时间
ps -eo pid,lstart,etime|grep 4188
4188 Thu Apr  2 16:58:29 2020  1-00:13:30
也可以进入数据库查看:
postgres=# select pg_postmaster_start_time();pg_postmaster_start_time    
-------------------------------2020-04-02 16:58:34.081295+08
(1 row)
这里看到有些偏差,文件里记录的时间应该是文件创建的时间
postgres=# select extract(epoch from '2020-04-02 16:58:34'::timestamp);  date_part  
------------1585817914
(1 row)
目前看来时间不需要特别精准,我给文件写入时间后,都可以正常使用4.数据库端口,即数据库参数port设置5.unix_socket_directory参数设置的目录,这里还是$PGDATA6.监听地址,listen_addresses参数值
7.共享段地址的值,这里是key,shmid,通过以下命令取的
ipcs -m------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x001dcce9 4227076    postgres  600        1214545920 641  文件里面都是10进制,0x001dcce9转换10进制的值为1953001,然后写入4227076

3. 找一个正常的数据库复制一个文件,按照上面逐项修改,最后把权限设置为600,重新使用 ,一切正常了。

$chmod 600 postmaster.pid
把文件复制到$PGDATA
$pg_ctl reload
server signaled

_错误删除文件恢复_误删数据库数据恢复

4. 以下是需要用的转换工具

登陆以下网址进行时间转换:

登陆以下地址可以进行16转10进制

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了