bacula 备份mysql_bacula 备份小技巧

bacula 是个优秀的开源备份软件,支持各种客户端,将使用的经验分享如下:

1、为防止中间人攻击,尤其是在公网备份时,使用pwgen生成高强度的随机密码,通过ssl加密,客户端指定服务端地址,iptables防火墙做点对点信任;

2、给存储卷(volume)帖上标签,更容易识别;

3、如果使用虚拟机做bacula,可以定期给虚拟机做快照,因为一旦bacula自己坏了,那就非常麻烦;

4、备份bacula的mysql库,mysql保存的是bacula-dir的核心数据内容,比如某年某月备份了XX服务器上的YYY,备份到了zzz存储卷上。这些信息在对于bacula还原非常关键。

5、文件校验不要使用sha1,那个非常耗费CPU,也可酌情使用md5校验或不做校验;

不建议使用gzip压缩,可酌情使用LZO压缩算法,牺牲一点CPU获得较为可观的数据压缩。

6、bconsole是控制服务端用的,不要跟客户端配在一起,在windows客户端上尤其要注意,它会默认安装bconsole;

7、每次bacula完成备份都会发邮件给root,可以根据需要填写成你的地址

Mail = root@localhost = all, !skipped

如果希望bacula只有在备份出错时才报警,那么将上面那行改为

8、如果你使用了logwatch,logwatch可能没权限检查日志,那么bacula的日志地址可能要改一下将

append = "/var/spool/bacula/log" = all, !skipped

改为

9、做好备份计划,个人认为,默认的WeeklyCycle已经比较完美,结合了全备、差备和增备的优点,任何时候都可以快速的恢复源文件。

对于某些周期性的环境,比如月初和月末业务量比较大,由于完全备份比较耗时,我们不希望这个时间段进行完全备份。因此可以设计备份计划为如下:

或者

10、做好容量管理

bacula有好几个让人眼花缭乱的参数用于淘汰过期的备份

这些参数确实让人无所适从,个人觉得比较好的办法是这样的:

假设硬盘容量为10TB,每个存储卷为10G,我们把磁盘的90%用于存储备份,那么最多可以容纳900个存储卷,每当存储卷不够用时,会自动回收最老的存储卷。这样就能保证磁盘利用率永远不会高于90% 。

一个存储卷的容量不宜过大,建议设置成一次增量备份的大小,但也不宜过小,不小于1G

大文件的好处是顺序读写,速度快,节省IOPS。但是如果过大,备份无法及时淘汰。

记住,不要给每个每个客户端单独分一个存储池,不要给每次任务单独一个存储卷,这样容易会让容量规划失控。也就是说所有备份都放入默认的存储池。bacula已经把存储过程抽象化成了存储卷了,不再需要我们去单独触碰存储卷了,通常来说,不必担心一个目录下存储卷太多,除非你一个目录下有几千几万个存储卷。如果那样,你应该考虑其他存储方式了,比如分布式文件系统。

11、对于非常繁重的备份任务,需要在job中进行时间限制,避免在白天用户高峰期备份,影响性能。

JobDefs {

...

Max Run Time = 12h

...

}

12、bacula默认不会跨文件系统备份,假设/data/log是一个单独的挂载点,bacula备份/data时,会跳过/data/log,使用onefs=no ,可以避免这个问题。

13、如果使用高版本的rpm安装,bacula-dir 可能无法到mysql数据库,日志里却显示无法连接到postgresql,那是因为使用了错误的驱动,使用下面的命令解决。

14、在bacula客户端较多的情况下,服务端主配置文件动不动几百上千行,难以维护。

bacula 开发团队比较懒,配置文件语法不支持include,但是可以用另类办法实现,在bacula-dir.conf 文末加上一行

这是一个shell,这个做法相当于

15、如果硬盘容量规划失败,磁盘爆满,下面这个脚本可以救你,请根据需要修改,也可以搞个定时计划,每天或每周执行一次

16、备份思路问题

在机器数量较少的情况下,对于备份任务,我们常常想到的问题是:“我要备份哪些东西?”,解决方法通常是加法,将需要备份的目录逐个列出来然后执行备份。

在机器数量变得庞大的时候,由于系统管理员的数量也会增加,并且系统管理员们也面临分工协作,或分管网络,或操作系统,或安全,或数据库,或具体业务。这种情况下,加法会面临困境,负责备份的管理员不知道每台机器具体需要备份哪些目录,并且逐个维护每台机器的具体备份路径也十分吃力,也容易失误,遗漏关键备份内容。

这个时候的解决办法,应该是回答问题“我不需要备份哪些东西?”,即减法。将不需要备份的目录列出来,然后统统执行备份,在部署业务时,只需主动规避上述目录即可。这个办法还可以解决一些历史遗留问题,即所有人都对机器上的业务没有完整认识。

17、另一种思路

如果你使用的是baucla 7.x的版本,该版本有个新功能Exclude Dir Containing,可以通过在文件夹里创建一个标识,让bacula跳过该文件夹的备份。

然后在bacula客户端的某个目录创建标识文件

加一点注释

这种方法也相对灵活,但需要事先约定好。

18、理解bacula的增量备份

bacula的增量备份是根据文件时间戳来判断文件是否应该备份。对于大文件应该特别注意,比如日志文件。每天增加了几十万行内容很正常,日积月累很容易变成几十G。bacula每天备份都需要全部备份一遍,比如tomcat的catalina.out,再如nginx的access.log,一定要记得定期切割轮转。

19、使用nmap和配置文件模板,定时扫描并自动添加新的客户端

示例模板文件

自动发现脚本

写的很杂,各位见谅,欢迎留言。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值