postgresql - Postgresql 致命的数据库系统正在启动 - Windows 10
问题描述
我已经安装postgresql
在windows 10
. usb disk
每天当我在工作中启动我的电脑sleep
并再次插入磁盘然后尝试启动时,postgresql
我都会收到此错误:
FATAL: the database system is starting up
该服务以以下命令启动:
E:\PostgresSql\pg96\pgservice.exe "//RS//PostgreSQL 9.6 Server"
它是默认的。
日志来自E:\PostgresSql\data\logs\pg96
2019-02-28 10:30:36 CET [21788]: [1-1] user=postgres,db=postgres,app=[unknown],client=::1 FATAL: the database system is starting up
2019-02-28 10:31:08 CET [9796]: [1-1] user=postgres,db=postgres,app=[unknown],client=::1 FATAL: the database system is starting up
我希望这种启动更快地发生。
解决方案
当您将数据提交到 Postgres 数据库时,唯一立即保存到磁盘的是预写日志。实际的表更改仅应用于内存缓冲区,并且在下一个检查点之前不会永久保存到磁盘。
如果服务器突然停止,或者突然失去对文件系统的访问权限,那么内存中的所有内容都会丢失,下次启动时,它需要重放日志以恢复表正确的状态(这可能需要很长时间,取决于自上次检查点以来发生了多少)。在完成之前,任何使用服务器的尝试都将导致FATAL: the database system is starting up
.
如果您确保在拔出磁盘之前完全关闭服务器 - 给它一个设置检查点并刷新其所有缓冲区的机会 - 那么它应该能够或多或少地立即重新启动。
推荐阅读
- algorithm - 绘制给定区域的像素圆
- .htaccess - 使公共域名只能从内部网络访问
- python - ImportError:没有名为 build_lib 的模块
- php - 跳过数据库中存在的实体
- javascript - 为什么 nvm (for windows) 不工作,并且无论何时运行它都会给出错误消息?
- html - 如何处理邮件签名中的动态图像
- sql - 如何将 ISNULL() 函数与 join 一起使用
- c++ - 从另一个文件夹配置时,Automake 使用源的绝对路径
- python-3.x - 当在 ODOO 12 中创建模型 B 的新实例(模型 A 具有 many2one 字段)时,如何更改模型 A 中的布尔值?
- java - 如何让后台任务在地图上移动标记