有什么简单的 mysql 增量备份方案?

2014-12-17 22:46:39 +08:00
 caixiexin
想弄一个自动作业每天备份公司项目的一个mysql数据库,原本采取的方案是crontab+全量mysqldump 然后gzip压缩并按日期保存,最后生成文件大概30多M的样子。但是毕竟这种全量备份放在每天执行不是很好,因为以后数据会越来越大(其中几张表,每天可能增加几w条数据)。
百度google了mysql增量备份的方案,看到有2种:
1.也是使用mysqldump,然后将这一次的dump文件和前一次的文件用比对工具比对,生成patch补丁,将补丁打到上一次的dump文件中,生成一份新的dump文件。(stackoverflow上看到的,感觉思路很奇特,但是不知道这样会不会有问题)
2.增量拷贝 mysql 的数据文件,以及日志文件。典型的方式就是用官方mysqlbackup工具配合 --incremental 参数,但是 mysqlbackup 是mysql Enterprise版才有的工具(收费?),现在项目安装的mysql版本貌似没有。还有v友中分享的各种增量备份脚本或工具也是基于这种方案?

请问像我这种需求,应该如何选择增量备份工具呢?要是大家知道好用有简单上手的也推荐下,不胜感激:)
10669 次点击
所在节点    MySQL
29 条回复
pubby
2014-12-17 23:10:01 +08:00
数据量小就mysqldump
大了就跑主从,在slaver上dump
再大了,就把slave跑在能建文件系统快照的系统上,每天建文件系统快照
wdlth
2014-12-17 23:20:19 +08:00
常用的方法是用binlog做增量备份。
lyragosa
2014-12-17 23:24:20 +08:00
用binlog

dump表不能做到真·即时
wdd2007
2014-12-18 00:23:28 +08:00
kslr
2014-12-18 01:58:24 +08:00
几万条没必要把
msg7086
2014-12-18 02:33:02 +08:00
你需要先确定一些事情,比如
1. 这些数据重要吗?如果在你预定备份前1个小时数据丢了,你能承受损失吗?
2. 有可用资金吗?比如每月多花50块钱买一个VPS之类?
3. 数据库是innodb吗?

如果数据很重要,有点预算,请用master-slave结构备份,slave机上再用cron做定时备份。
如果数据一般般,或者写入量很少,或者没钱,cron做定时备份就好。
如果数据库全是innodb,可以考虑直接上galera做同步复制,然后slave机上做定时备份。
yellowV2ex
2014-12-18 02:35:06 +08:00
你们说服务器有没有类似 Time Machine 之类的东西,自动备份每小时,每天,每星期,每月到某个dropbox 云储存之类的或另一个服务器?
msg7086
2014-12-18 02:48:01 +08:00
@yellowV2ex 自己写脚本。这种高度定制化的东西不太可能会有通用方案。
特别是数据库这种东西你怎么自动备份。
yellowV2ex
2014-12-18 02:55:31 +08:00
@msg7086 我只想有个一键安装,然后填个dropbox用户名,就帮我备份mySQL和或某个目录的文件到我自己的dropbox上就好啦。至于背后的什么增量备份啊,一键恢复啊,工具帮我搞定。
有这种易用东西吗?
yellowV2ex
2014-12-18 02:56:44 +08:00
@msg7086 就像 Time Machine ,我只要插上移动硬盘然后点个菜单他以后就会帮我自动每小时每天每星期的完全备份了
msg7086
2014-12-18 03:00:35 +08:00
@yellowV2ex TimeMachine只能备份一个一个完整的文件,不能备份数据库这种每时每刻都在改变的东西。目录是可以备份的,安装dropbox就好了。
yellowV2ex
2014-12-18 03:03:16 +08:00
@msg7086 难道真的没有 一键备份,一键恢复 的东西吗?这样备份的话,数据虽然是在,但要恢复到一台新服务器上,也是折腾的不是一时半会儿啊。还是说搞服务器的就是喜欢这样自己折腾什么都自己写脚本。。
msg7086
2014-12-18 03:11:31 +08:00
@yellowV2ex 技术上做不到,代价太大。

随便举个栗子吧。
我手头在管理一个中型论坛。数据库的写入量是每秒几十次左右。数据库容量大概是15G左右。
在任何时候,如果你要备份的话,都要读取15G数据,还要与上一次备份的数据做对比。
先不说你的网络是否快到能很快对比完这么多数据……
首先你要把这些数据从硬盘上读出来,按照普通硬盘150MB/s的速度就要花费2分钟
在这2分钟内,正在运行的论坛已经写入了超过1000次新的数据了
所以你在读取文件的时候,文件头部和尾部的数据已经不在同一个时间点上了
等你全部读取完毕的时候头上的文件是2分钟之前的,中间的是1分钟之前的,而尾部则是新鲜出炉的
这种数据就算给你恢复了,数据库结构也是坏的
luo362722353
2014-12-18 04:33:49 +08:00
我个人比较依赖云端,我个人选择copy网盘,然后打通与move对接,move支持每小时的备份,全量,增量自己选择…
jarlyyn
2014-12-18 08:25:43 +08:00
@msg7086 snapshot
caixiexin
2014-12-18 08:34:24 +08:00
睡前发了个贴醒来这么多回复,大家都是夜猫子吗:)
caixiexin
2014-12-18 08:35:17 +08:00
@msg7086 是innodb的库,主机空间不是问题,那是客户提供的,不差钱= =不过现在只有一台,可能不好做主从?数据也算比较重要的,只是之前一直没有做每日的备份,同时我也想趁这次机会学学mysql维护方面的知识
caixiexin
2014-12-18 08:37:01 +08:00
@luo362722353 copy到网盘?具体是怎么操作的,我一直以为网盘只能同步文件。。。感觉很神奇的样子。
caixiexin
2014-12-18 08:37:26 +08:00
@wdd2007 谢谢,我参考下
caixiexin
2014-12-18 08:38:12 +08:00
@wdlth 谢谢,我搜下相关资料看看

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

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

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

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

© 2021 V2EX