postgres及单用户模式

作者:瀚高PG实验室 (Highgo PG Lab)- 天蝎座
启动PG数据库服务器,实际上就是使用不同的参数运行postgres程序。
postgres程序有很多命令行参数,大家可以查看PG中的相关内容,此处不再详细介绍。
postgres单用户模式就是在启动postgres程序时加上–single参数,这时postgres进程不会进入到后台模式,而是进入到一个交互式的命令行模式,如下:

[highgo@hgdb ~]$ postgres --single

PostgreSQL stand-alone backend 9.5.7
backend> 

在这种交互模式下,可以执行一些命令SQL等。
单用户模式主要用于修复数据库的以下几种场景:

  • 当多用户模式不接受所有命令时,可以使用单用户连接数据库。
  • initdb的阶段。
  • 修复系统表。

例如,在PG中事务年龄不能超过2^31 (2的31次方),如果超过了,这条数据就会丢失。
PG中不允许这种情况出现,当事务的年龄离2^31还有1千万的时候,数据库的日志中就会
有如下告警:

warning:database "highgo" must be vacuumed within 177000234 trabnsactions
HINT: To avoid a database shutdown,execute a database-wide VACUUM in "highgo".

如果不处理,当事务的年龄离2^31还有1百万时,数据库服务器出于安全考虑,将会自动
禁止任何来自任何用户的连接,同时在日志中是如下信息:

error: database is not accepting commands to avoid wraparound data loss in database "highgo"
HINT: Stop the postmaster and use a standalone backend to VACUUM in "highgo".

出现这种情况时,只能把数据库启动到单用户模式下,执行VACUUM命令来修复了。

[highgo@hgdb ~]$ postgres --single

PostgreSQL stand-alone backend 9.5.7
backend> vacuum full;
backend> Ctrl + D
[highgo@hgdb ~]$ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值