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

36 天前
 bthulu

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

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

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

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

13864 次点击
所在节点    程序员
164 条回复
datocp
36 天前
你不要自己先做判断,为什么客户不能加 ups

客户购买软件肯定是为提高生产效率,他们这种断电的行为肯定会影响它们的生产任务,停它个 2-3 小时试试。
当然连机房都没有就。。。只要它们可以停得起。

你要做的是言明可能造成的风险,无非就是无法查询影响业务开展甚至停工停产业务混乱,是 2 千块的 ups 重要,还是当天业务无法开展重要。

以前用的一家 web erp ,财务每星期准备 5 千块,时刻等待业务被卡继费继续开展业务。员工不关闭电脑拉闸导致服务器挂掉该告知的是他们老板,或者收笔上门维护费吧,有些业务叫上了贼船下不来。
joh
36 天前
设个定时关机,下班断电前几分钟自动关机
bthulu
36 天前
@datocp 因为业务大头在硬件上面, 软件是附带的. 我们软件起不来的情况下, 客户还有其他解决方案, 虽然会麻烦很多.

几百块的 UPS, 倒也不是用不起, 但是多了个设备, 采购发货接线配置断电重启, 都是麻烦事. 如果是核心业务, 这么做无可厚非, 但是边缘业务, 给客户锦上添花的, 肯定不能这么玩.
datocp
36 天前
公司 2010 年的一套 web 查询系统,是使用 freebsd zfs ,用的 postgresql ,确实强断电没问题,但是那个希捷的企业级硬盘坏道也非常厉害。目前还在一套不重要的系统上当系统盘。。。


日期 SMART 10 SMART 12 SMART 5 SMART 187 SMART 188 SMART 197 SMART 198
20210827 0 200 25769803783 0 0 0 0
20210901 0 200 25769803783 0 0 0 0
20211006 0 201 25769803783 0 0 0 0
20211109 0 203 30064771080 0 0 0 0
20211221 0 203 30064771080 0 0 0 0
20220126 0 204 30064771080 0 0 0 0
20231125 0 228 90194313238 5 0 0 0
20240322 0 228 90194313238 5 0 0 0
bthulu
36 天前
@joh 但是没人知道几点下班. 都是单子什么时候昨晚, 什么时候下班. 也可能单子做完了, 突然又来了急单就不下班了.
fuis
36 天前
SQLite 或者 Postgre
yangxiaopeipei
36 天前
到点执行关机。
whathappen
36 天前
3 条路:
培训员工。
加 UPS 并设置联动。
改一下厂房的电路。


改独立 24 小时供电的电路应该是最优选。
8355
36 天前
一定要用线上来解决线下的问题。。。。


你非要这样的话我来提供一个解决方案更简单更适合他们
系统逻辑代码层写死,到几点下班自动关闭写操作,只允许读不允许写操作,那么只要你能保证在可能关闭电源的时候就不会出现写操作 就不会产生 redo log 也不会产生相关异常。

必要时可以加入计划任务直接把 mysql 服务关闭,通电开机时自动启动。
cheng6563
36 天前
@dynastysea #30 你怎么配置能解决 SSD 断电掉盘的问题?
BeforeTooLate
36 天前
这是啥系统,要给每个客户整个服务器放他们厂里,当时不应该统一上云或者自管机房还是说是完全内部系统不能放在厂房以外的地方?
dzdh
36 天前
postgres
lloovve
36 天前
联网到无法断电的地方,这么折腾先坏的是硬盘,或者直接 4g 联网上云
llxvs
36 天前
加一個在數據庫啟動前的腳本,刪除你說的那個日誌
ccc008
36 天前
其实也简单。楼主说“数据丢失部分是无关紧要的”,那么楼主就在开机的时候做个脚本,自动检查并清除 redo 日志
yufeng0681
36 天前
1 、工厂里加一根电线,单独供电
2 、工厂侧放笔记本电脑,服务器放办公室
joh
36 天前
@bthulu 软件层面怎么解决硬件问题…加个检测系统,到点且没有新单子就把核心业务系统关了等断电,有单子就启动系统读写数据库…不过这样硬件迟早要出问题
tpopen
36 天前
实时备份算了
MoYi123
36 天前
@cheng6563 这个是指不管在哪个瞬间断电, 数据库只要对 insert 返回了成功, 就一定不丢数据, 如果中间出现了异常就返回失败, 由应用程序来决定之后的处理.
cuicuiv5
36 天前
写一个程序, 检测到你说的错误时就删除日志

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

https://www.v2ex.com/t/1090399

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

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

© 2021 V2EX