如何解决这样的Postgres会突然关机后启动
发布网友
发布时间:2022-04-19 18:23
我来回答
共1个回答
热心网友
时间:2022-05-02 22:12
shutdown-mode有如下几种模式:
1. smart: 等所有的连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
2. fast: 快速关闭数据库, 断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。
3. immediate: 立即关闭数据库,立即停止数据库进程,直接退出,下次启动时会进行实例恢复。
本实验采用immediate方式模拟数据库异常关闭:
(1)创建测试表并插入测试数据
highgo=# select * from t;
id |name
----+------
1 |a
(1 row)
highgo=# insert into t values(2,'a');
INSERT 0 1
highgo=# \q
(2)模拟数据库强制关闭
[highgo@sourcedb ~]$ pg_ctl stop -mimmediate
日志: 接收到立即 (immediate) 停止请求
警告: 中断联接, 因为其它服务器进程崩溃
详细信息: Postmaster 命令此服务器进程回滚当前事物并退出, 因为其它服务器进程不正常的退出可能毁坏了共享内存.
提示: 一会儿你将可以重联接数据库并且重复你的命令.
waiting for server to shut down.... done
server stopped
(3)再次启动后,数据库会进行实例恢复
[highgo@sourcedb ~]$ pg_ctl start
server starting
[highgo@sourcedb ~]$ 日志: 数据库系统中断;上一次的启动时间是在2017-04-04 07:58:13 CST
日志: 数据库系统没有正确的关闭; 处于自动恢复状态中
日志: redo 在 0/1929070 开始
日志: record with zero length at0/19291F0
日志: redo 在 0/19291C0 完成
日志: 上一次完成事务是在日志时间2017-04-04 07:58:22.691571+08完成的.
日志: MultiXact member wraparoundprotections are now enabled
日志: 数据库系统准备接受连接
日志: 已启动autovacuum
(4)验证数据一致性
[highgo@sourcedb ~]$ psql
Password:
psql (3.0.2)
Type "help" for help.
highgo=# select * from t;
id |name
----+------
1 |a
2 |a
(2rows)
如何解决这样的Postgres会突然关机后启动
1. smart: 等所有的连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。2. fast: 快速关闭数据库, 断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。3. immediate: 立即关闭数据库,立即停止数据库进程,直接退出,下次启动时会进行实例恢复。本实验采用immediate方式模拟数据库...
LINUX常见问题20个
使改变生效,以后只要依次运行X,X1,X2,X3,X4,X5就可以启动6个X-Windows了。 二十、装了rpm的postgresql之后启动 /etc/init.d/postgresql start是不能启动postgresql的tcp/ip连接支持的,所以打/etc/init.d/postgresql这个文件把su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl -D $PGDATA -p...