python - 我可以使用 bazaar 提交一个大文件,还是有更好的方法来对数据库转储进行版本控制?

标签 python database memory version-control bazaar

Bazaar 根据可用的虚拟内存限制它可以提交的文件大小(根据 open bug )。

我想将数据库(如 mysqldump 文本文件)置于版本控制之下。数据库是 3 GB,我正在使用 64GB 内存的服务器。我不明白为什么这会是个问题。当我尝试提交时,我收到错误报告中的错误:

bzr: ERROR: exceptions.OverflowError: requested number of bytes is more than a Python string can hold

有没有办法让我在 bazaar 版本控制下获取这个文件?

我对 bazaar 的偏爱是因为我熟悉它,但我计划将转储自动化并作为 cron 作业 checkin ,因此任何合适的版本控制系统都可以。


到目前为止,我想到了两个选项,直到出现更好的解决方案。目前,我保留每个每周转储备份的副本,此时存储不是问题。否则,我可以保留第一个转储,区分转储的原始版本和新版本,并对其进行版本控制。这将保留更改的记录,但不可能返回到较早的状态。除非有一种直接的还原方法,否则我对此感到不舒服。

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

然后在cron脚本中

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

最佳答案

虽然我喜欢 Bazaar,但我不建议您将它用于此目的,除非您确实需要无限期地保留数据的每个版本。相反,如果您只需要固定数量的过去版本(例如 10 个)或只需要固定时间段(例如 2 年),那么我建议您使用像 rdiff-backup 这样的增量备份工具。 .

关于python - 我可以使用 bazaar 提交一个大文件,还是有更好的方法来对数据库转储进行版本控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8024846/

相关文章:

c++ - 内存分配问题 C/Cpp Windows 严重错误

c - 关于C中内存使用的问题

c - 使用 switch 语句的字数统计程序在 C 中出错

python - Python 的三引号字符串是如何工作的?

python - 用循环更新表

python - 制作脚本内容 'safe' 用于 HTTPS 显示(Bokeh)

python - 如何存储查询结果(使用 Python)

mysql - 使用 MYSQL 对相似的字符串进行分组以收集

python - 无法使用 docker 内的解释器运行 python 脚本 [Errno 13] 权限被拒绝

Python - 带有 .format 或 %s 的多行 raw_input