如何解决这样的Postgres会突然关机后启动

如何解决这样的Postgres会突然关机后启动,第1张

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)

选择开始菜单中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打开【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份验证建立连接。

在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点

右键单击【数据库】节点,从d出来的快捷菜单中选择【新建数据库】命令。

执行上述 *** 作后,会d出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,

在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。

在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。

切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

切换到【文件组】页,在这里可以添加或删除文件组。

完成以上 *** 作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6758386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存