有什么数据库扛断电能力最强吗?

317 天前
 bthulu

服务器在客户厂里, 客户没有机房, 就放在厂子机器旁边.

每天下班后, 客户员工从来不会去关闭电脑, 都是直接拉闸整厂断电.

系统稳定运行了大半年后, 从最近开始, 每隔几个月, mysql 就报 redo 日志异常无法启动, 需手动删除日志后才能启动, 这有点恶心了.

有没有在同样场景下, 试过 oracle, sqlserver, postgresql, sqlite 这些的同学, 这些数据库存不存在这个问题?

17187 次点击
所在节点    程序员
164 条回复
jimrok
317 天前
@roundgis 你说的对,读 sqlite 的故事时间太久了,记忆混乱了,是外包商。

“SQLite 诞生的契机就是典型的程序员开发的故事剧本。作者 Richard 最开始在一艘军舰上做 contractor (就是我们说的外包)。他们程序跑在军舰安装的电脑上,电脑上装的是 informix 。Richard 的工作就是把 informix 的数据拿出来进行计算然后展示到电脑屏幕上(这和我们今天的 CRUD 工作类似)。比较令人恼火的是 informix 很不稳定,经常崩溃连不上。部队里的铁拳长官可不懂啥 TCP/IP 或者数据库系统知识。他们只看到软件的报错 dialog (对话框) 经常弹出来,而这个 dialog 又是 SQLite 的作者 Richard 写的软件画出来的,锅自然从天而降。于是 Richard 决定自己从头写一个无需外部连接的数据库来解决这个问题。

当时恰逢布什政府消减政府预算,Richard 作为外包商没法获得订单,不得不暂停在军舰上的开发。这让 Richard 有了几个月的时间去构思并从头实现 SQLite 。那时时间是 2000 年初,软件开发没有现在这么多参考资料,没有维基百科,google 还没完全起来, 美国只有 1% 家庭有宽带。 而 Richard 也没有数据库开发经验,只有编译器开发经验。他最初的构想非常简单,把每条 sql 语句看成一个独立的执行程序。于是他首先实现了 bytecode 执行器,然后把 sql 语句转化成 bytecode 执行。一开始 SQLite 并没有替换掉他们在军舰上的 informix ,尽管他们每个开发者都恨透了 informix ,但客户指定要用又不得不继续使用(好熟悉的场景)。就这样 SQLite 一直做为 Richard 的 side project 在开发。

为了验证一些想法和测试其中的代码,Richard 开始把 SQLite 发布到网上,接下来的故事和 Linux 诞生有点类似了。很多人看到一个数据库居然能运行在 palm 这种性能非常弱的掌机上都大为惊叹。”
jimrok
317 天前
@bthulu 思路应该就跟无线路由器一样,关机就是拔电。平时运行纯靠内存里的数据。
fds
317 天前
问了 GPT ,回答:如果你的应用场景需要处理较大的数据和高并发,PostgreSQL 可能是最佳选择。PostgreSQL 使用一种高效的写入前日志( WAL )系统,即使在断电或系统崩溃的情况下也可以保证数据完整性。对于小型应用或嵌入式系统,SQLite 可能已足够,使用回滚日志或写入前日志( WAL ),可以在断电后自动恢复到一致状态。
跟前面大家的主流意见一致。
byte10
317 天前
可以考虑加一个 4G 无线 wifi ,十几块,搞远程数据库吧。或者加几十块的那些啥开发板做底层的数据库存储,充电宝就能保护它了。
TellMeWHY
317 天前
用无盘系统、瘦客户机,每次都从云服务器上下载启动镜像,业务数据都放云端,除了开机时间长点,断电不怕
windyboy
317 天前
有一个自己写 IO 接口的, https://tigerbeetle.com
不过不是通用数据库,是专用的交易数据库,业务是固定的
这个可以处理文件系统失败
bthulu
317 天前
@thtznet 工厂里员工不都是这样么? 精细复杂的工作都是机器自己在做, 普工除了几个机长, 不都是谁要价低招谁么.
doyel
317 天前
300 块的 UPS ,够带服务器 Shutdown 的时间就够了,写个 cron ping 网关,掉了就执行关机。。。
ltyj2003
317 天前
有带很多电容的固态硬盘,主板掉电时硬盘自己能完成保护,避免坏数据和固件。
loveour
317 天前
经常断电硬盘一定会坏。记得常备份。
Rorysky
317 天前
硬件层面可以选择带电容的 ssd ,断电基本不会有问题,会有缓冲时间让系统写入
系统层面选择 日志文件系统,并做好 raid
szx300
317 天前
ups 又不贵,小型的啊
kwater
317 天前
检测到断电 ups 通知系统安全关机,这是民用 ups 都可以的,这种方式工作应该至少可以撑 3 年。

一台核心生产机器三四百都觉得会破产,那还是。。。。
afeiche
316 天前
没有事务的数据库估计好恢复,sqlite 吧
kid1412621
316 天前
按理说消防用电应该是单独走线的…
zhangeric
316 天前
如果数据不重要,直接上文件类型的数据库,比如 sqlite,access 一类,每天生成一个新的数据库.当天的损坏了,不影响其他.
james122333
316 天前
买大型可以带多台机器的 ups 不正常断电机器坏更伤的 看到有蛮多带 15 台要价 1300 的
james122333
316 天前
应该还有性价比更高的 ups
james122333
316 天前
抱歉 没注意看 原来是客户机房 那说实话量也不大 直接硬盘储存就好
spritecn
316 天前
云数据库

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1090399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX