我可以用Bazaar提交大文件吗?还是有更好的数据库备份版本控制方法?

4 投票
4 回答
1107 浏览
提问于 2025-04-17 05:44

Bazaar这个工具会根据可用的虚拟内存限制可以提交的文件大小(这是一个已知问题)。

我想把一个数据库(以mysqldump文本文件的形式)放到版本控制里。这个数据库有3GB大,而我在一台64GB内存的服务器上工作。我不明白为什么会有问题。当我尝试提交时,出现了这个错误:

bzr: 错误: exceptions.OverflowError: 请求的字节数超过了Python字符串能容纳的大小

有没有办法让我把这个文件放到bazaar的版本控制里呢?

我选择bazaar是因为我对它比较熟悉,但我计划把备份和提交自动化,作为一个定时任务,所以任何合适的版本控制系统都可以。


到目前为止,我想到两个解决方案,直到出现更好的办法。目前,我保留每周备份的一个副本,存储空间不是问题。否则,我可以保留第一次备份,比较原始和新版本的备份,进行版本控制。这样可以记录变化,但无法恢复到早期的状态。我对此不太放心,除非有简单的方法可以恢复。

mysqldump mydb > mydb_base.sql
touch mydb_diff
bzr add mydb_diff
bzr commit -m 'first commit'

然后在定时任务脚本中

mysqldump mydb > mydb.sql
diff mydb_base.sql mydb.sql > mydb_diff
bzr commit -m "`date +%Y.%m.%d-%H.%M` mydb diff" mydb_diff

4 个回答

0

如果“外部版本控制系统”的建议适用,我得说

1

这是一个在 bzr 里出现的错误,已经在最近的版本中修复了。你可以查看这个链接了解更多信息:https://bugs.launchpad.net/bzr/+bug/683191

2

虽然我很喜欢Bazaar这个工具,但我不建议你为了这个目的使用它,除非你真的需要永久保存每一个数据版本。如果你只需要保留一定数量的过去版本(比如10个),或者只需要保存一段固定时间内的版本(比如2年),那么我建议你使用一个增量备份工具,比如rdiff-backup

撰写回答