给定:一个使用 Couchbase 1 的旧 Java 项目。它在运行时备份方面存在很大问题。简单的复制文件和 cbbackup 方式都不起作用。获得的备份已损坏,Couchbase 无法从它们启动。获取数据快照的唯一方法是相对较长的应用程序关闭时间。
现在,我们正在迁移到 Couchbase 2+。 cbbackup
失败并出现类似的情况(对我来说毫无意义,Couchbase 1 中没有任何设计文档):
/pools/default/buckets/default/ddocs; reason: provide_design done
但是,如果我们使用生成的文件,Couchbase 似乎会唤醒并正常工作。
问题 1:对于整个损坏的备份情况有什么见解和帮助吗?
问题 2:在我们的案例中,我们至少如何确保新数据库备份的一致性? (通过客户端为所有文档和字段编写一个巨大的检查包非常昂贵,也是最后的选择。)
我感谢任何帮助,这对团队来说是一个模糊的遗留基础设施,谷歌搜索和 Couchbase 文档对我们没有多大帮助。
最佳答案
Question 1: Any insights and help with the whole spoiled backups' situation?
Couchbase 1.x 使用 SQlite 作为磁盘格式(每个 Bucket IIRC 共享为 4 个文件),这在规模上存在许多问题。
Couchbase 2 的主要变化之一是转向自定义的仅追加文件格式 (couchstore),这种格式更不容易受到任何损坏问题的影响(因为一旦写入 block 就永远不会被修改),直到新的压缩文件稍后由自动化作业创建。
How, at least, we could assure a consistency of the new database backups in our case? (Writing a huge check pack for all docs and fields through the client is very expensive and the last option.)
如果您想检查备份的一致性,您需要按照您提到的方式执行一些操作。
但请注意,如果您正在备份实时系统(就像大多数人一样),那么在进行备份和比较备份之间,实时系统可能会发生变化。
最后,我建议查看 1.8.x to 2.0 Upgrade Guide在 Couchbase 网站上。请注意,2.x 现在已经相当老了(截至撰写本文时 3.x 是当前版本,4.0 处于测试阶段),因此 2.0 文档位于网站的存档部分中。
关于java - Couchbase 1 -> 2 迁移。备份获取及一致性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32115220/