惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

NoSQL

为什么你们要把 sql 当 nosql 用? - V2EX “nosql 数据库”称呼为什么很流行? - V2EX 写了一篇文章介绍几种 NoSQL 的数据库 - V2EX 有类似 squirrel sql 这样的可视化工具吗 - V2EX 关于索引和查询的几个问题,网上没找到答案 - V2EX Hbase 初学疑问? - V2EX 有人了解 orientdb 吗? - V2EX NoSQL 选择问题 - V2EX 有哪些分布式数据库,实现最终一致性的 - V2EX 关于实现类似知乎草稿箱的问题 - V2EX 关系型数据库和非关系型数据库区别 - V2EX Cassandra metric 导出到 opentsdb 脚本 - V2EX [嘲讽向]MongoDB is web scale - V2EX mongodb 如何实现按照中文拼音的排序 - V2EX 寻求 NoSQL 的最佳实践 - V2EX NoSQL 性能测试 - V2EX 关于 leveldb,现在有国内或者国外的大神把它封装成服务的形式么 - V2EX 大家怎么看 NoSQL 的 ORM - V2EX 感觉nosql其实就是包装lucene这些东西而已。 - V2EX Aerospike - V2EX 有没有完全用 Redis 这样的 Key-Value 数据库来支撑的论坛程序? - V2EX mysql转nosql的逻辑问题 - V2EX Oracle 发布 NoSQL 数据库 - V2EX Google的LevelDB到底是个怎么样的东西? - V2EX 踏上 NoSQL 之路 - V2EX 推荐个小组 - V2EX 有哪位对MongoDB有所了解?能否分享一下使用感受? - V2EX 一些值得关注的新型数据库 - V2EX NoSQL 区 - V2EX
机器意外掉电后,leveldb数据几乎全部丢失,求如何修复 - V2EX
pubby · 2013-07-22 · via NoSQL

这是一个创建于 4710 天前的主题,其中的信息可能已经有所发展或是发生改变。

其中一个5G左右的库,读写比较频繁。

供电跳闸,机器重启后该库里面所有的key都无法访问

找了段python代码,
#!/usr/local/bin/python

import leveldb
leveldb.RepairDB('/data/leveldb-db1')
修复数据库

修复过程中LOG里面全是这种信息:
2013/07/22-01:16:48.812110 801407400 Table #8527104: 0 entries Corruption: corrupted compressed block contents
2013/07/22-01:16:48.812123 801407400 Table #8527104: ignoring Corruption: corrupted compressed block contents
2013/07/22-01:16:48.812170 801407400 Archiving /data/sleveldb-db1/8527104.sst: OK

修复后只剩2个.sst文件,其他3千多个.sst文件都移动到了一个lost 目录

用 /data/leveldb-db1/lost 打开数据库,也无法读到任何key

求相关经验的人士指点

第 1 条附言  ·  2013 年 7 月 24 日

数据已经修复。 leveldb没坑我,是自己把自己坑了 :(

数据都是snappy压缩的,那个redis-storage我为了部署方便是直接把leveldb和snappy静态编译好然后从其他机器copy过来的。

而当时为了修复数据,直接在数据库所在机器安装了leveldb。但是坑爹的是没有连接上snappy库,我记得确实选择了SNPPY的。
后来发现在freebsd ports里面反复安装leveldb,虽然有SNAPPY选项,但是确实没法链snappy进来,于是手动修改了一些编译配置,终于把snappy编译进来了。

重新用那段python脚本,修复后基本上数据都在。

lookhi

1

lookhi      2013 年 7 月 22 日

真悲惨,操作前你备份了吗?

pubby

2

pubby      2013 年 7 月 22 日

无备份 -_-

其它几个库有异地备份,这个库不是重要数据就没备份,但是重新生成这些数据的话也需要好几天时间,所以如果能修复就最好

大致看了一下.sst中的数据都在的。能修复大部分数据也行

lookhi

5

lookhi      2013 年 7 月 23 日

@pubby 找现成程序估计不行了。
嗯,去找找看leveldb的数据格式,读出里面的数据来吧。

soli

6

soli      2013 年 7 月 23 日

LevelDB 的这个坑好大啊。
我们也在这上面吃过亏。

soli

10

soli      2013 年 7 月 23 日

@clowwindy SQLite 和 MongoDB

话说,MongoDB 用不好也坑

clowwindy

12

clowwindy      2013 年 7 月 23 日

@soli
@pubby

我们是在 iOS 的 App 上当存储的 backend 用,SQLite 太重。
因为 levelDB 也是 Chrome 和 Riak 的 backend,照理说应该不会有大坑的。

pubby

13

pubby      2013 年 7 月 23 日

@clowwindy 那机器上跑了十几个leveldb库,就这个出问题了,看来还是存在一定的损坏概率。

另外就是数据恢复工具缺乏,那RepairDB()也太简陋了

pubby

16

pubby      2013 年 7 月 23 日

leveldbutil dump *.sst
全是
Corruption: corrupted compressed block contents

看来是没戏了

pubby

17

pubby      2013 年 7 月 24 日   ❤️ 1

@lookhi
@Chewbacca
@soli
@clowwindy
@LazyZhu
感谢,数据已经修复。 leveldb没坑我,是自己把自己坑了 :(

数据都是snappy压缩的,那个redis-storage我为了部署方便是直接把leveldb和snappy静态编译好然后从其他机器copy过来的。

而当时为了修复数据,直接在数据库所在机器安装了leveldb。但是坑爹的是没有连接上snappy库,我记得确实选择了SNPPY的。
后来发现在freebsd ports里面反复安装leveldb,虽然有SNAPPY选项,但是确实没法链snappy进来,于是手动修改了一些编译配置,终于把snappy编译进来了。

重新用那段python脚本,修复后基本上数据都在。

soli

18

soli      2013 年 7 月 24 日

@pubby 想请教一下,你 LevelDB 的热备是怎么做的。记得当初我们用 LevelDB 的时候是没法热备的。

pubby

19

pubby      2013 年 7 月 24 日

@soli 不是严格意义上的热备
我这边应用比较特殊,数据都是只读即可

本地有专门生成数据的机器,把数据存入本地leveldb,同时程序会把写入的数据加入一个同步队列,然后另外一个同步程序定时把队列里的数据同步到几台服务器上并写入服务器上的leveldb。