我正在尝试停止已在Ubuntu服务器上运行的Postgresql 9.3数据库,但收到以下消息:
root @ myprodserver:〜#sudo /etc/init.d/postgresql stop
如果我尝试列出群集,我会得到一个空结果:
root @ myprodserver:〜#pg_lsclusters Ver Cluster端口状态所有者数据目录日志文件
我试图运行一个createcluster:
root @ myprodserver:〜#pg_createcluster 9.3 main
配置现有群集(配置:/etc/postgresql/9.3/main,data:/var/lib/postgresql/9.3/main,owner:106:114) 错误:move_conffile:必需的配置文件/var/lib/postgresql/9.3/main/postgresql.conf不存在
数据库已启动并正在运行。响应显示存在群集。我在过去多次重启服务而没有错误消息。
以下是'sudo ps aux |的结果grep postgres':
root 673 0.0 0.0 11748 2232 pts / 5 R + 15:57 0:00 grep --color = auto postgres
postgres 1044 0.0 0.2 293560 17868? S 2017 87:45 /usr/lib/postgresql/9.3/bin/postgres -D /var/lib/postgresql/9.3/main -c config_file = / etc / postgresql / 9.3 / main / postgresql.conf
postgres 1288 0.2 1.7 294156 142248? Ss 2017 657:18 postgres:checkpointer process
postgres 1289 0.2 1.7 293700 140836? Ss 2017 694:24 postgres:作家流程
postgres 1290 0.0 0.0 293560 7476? Ss 2017 140:10 postgres:wal writer process
postgres 1291 0.0 1.3 294508 107148? Ss 2017 55:46 postgres:autovacuum launcher process
postgres 1292 0.0 0.0 105220 3772? Ss 2017 172:17 postgres:stats collector process
postgres 7669 0.0 0.2 296244 17700? Ss 12:04 0:02 postgres:adempiere postgres :: 1(49525)闲置
postgres 7671 0.0 0.6 298716 54004? Ss 12:04 0:00 postgres:adempiere adempiere_produzione :: 1(49526)闲置
postgres 7855 0.0 0.4 295844 38160? Ss 12:04 0:00 postgres:adempiere adempiere_produzione :: 1(49527)闲置
postgres 8068 0.0 0.2 294884 18324? Ss 12:06 0:00 postgres:adempiere adempiere_produzione :: 1(49528)闲置
postgres 10115 0.0 1.9 308236 159916? Ss 14:25 0:05 postgres:adempiere adempiere_produzione 192.107.YY.XXX(55631)闲置
(继续)
答案 0 :(得分:3)
关闭服务器PG无法启动后,群集(数据库实例)丢失。
最后我能够恢复它。我必须纠正一些事情(见下文)然后我执行了:
sudo pg_createcluster 9.3 main
然后你应该开始吧
sudo /etc/init.d/postgresql start
系统回复: 配置现有群集....
在这些情况下可以做的事情: - 检查所有配置文件和数据文件是否在正确的文件夹中 - 检查postmaster.opts文件是否指向正确的位置
如果主群集(通常是“main”)仍未启动,则可以使用以下命令创建新群集:
pg_createcluster 9.3 cluster2
然后将数据库备份还原到新群集。
控制PG群集的命令:
列出群集
pg_lsclusters
启动/停止群集
pg_ctlcluster <pg version> <cluster name> <start|stop>
pg_ctlcluster 9.3 main start
pg_ctlcluster 9.3 clust2 stop
停止群集 - 删除活动连接
pg_ctlcluster -m fast 9.3 clust2 stop
答案 1 :(得分:0)
正如您从ps aux
的输出中看到的那样,在每一行的开头,每个postgres进程都以用户postgres的形式运行。
根据this,可以安全地运行:sudo pkill -u postgres
,它会发送一个信号让进程自行关闭,而不是以蛮力的方式。