bacula 备份mysql_如何使用bacula备份

bacula采用模块化设计,采用c/s构架,理论上可以把任意n台主机的资料备份到任意n台

中,而你不需要在每台机器上都写一个配置文件控制他们运作,所有主要的工作都在一

台director上控制。登陆上director你就可以知道什么备份正在运行,什么备份成功了

,什么备份失败了,所有的log也会集中到你指定的地方,让管理工作更简单一点。恢复

的时候也很简单,简单运行几个命令你就可以把指定的备份恢复。支持完全备份,差异

备份,增量备份;支持把备份写到硬盘文件中,也支持写到磁带中。支持平台相当多,

设置包括win平台(备份win,还不支持备份到win)。当然也有一些缺点,比如对并发备

份支持未经彻底测试,作者宣称最好不要尝试,除非你自己经过测试。还有一点就是文

档中没有一个quick start。。。。文档太详细了点,没有点耐心读不完。。。。

1,前期准备

bacula有三个模块组成。一个是Director,用于指挥整个系统运行,job schedule,通知

另外两个模块工作。一个是Storage Daemon,它是存储端,负责把网络中传来的数据备

份到本机,恢复的时候负责把数据传出去。最后一个是File Daemon,备份时把文件传出

,恢复时接受数据并恢复。其实上面的三个模块并不能让bacula运行,另外一个模块是

数据库模块。这个模块可以通过SQLite(编译进bacula),也可以使用MySql和PostgreS

ql,作者推荐的是mysql。还需要一些第三方库才能编译:GZIP和Readline。文档中没有

说明,但其实还需要另外一个软件才能保证正常运行:ntp。因为差异备份和增量备份都

依赖于文件修改时间来决定是否备份。单机备份问题不大,网络备份就需要考虑各个主

机的时间差异了。所以我推荐所有主机每天运行两次ntpdate来调准时间。如果你在sjtu

网络里面,可以使用dns.sjtu.edu.cn来调校时间。

如果你使用的是磁带机备份,还需要检查一下你的磁带机是否被支持。而且最好去阅读

文档中的Understanding Pools, Volumes and Labels一节。否则配置的时候你会搞得晕

乎乎的。

2,编译

编译过程很简单,文档也很详细,就不具体介绍了。注意一点是被备份机器上可以使用-

-enable-client-only编译。

3,数据库建立

下面说说mysql的建立过程。首先在代码根目录中

cd src/cats/

./grant_mysql_privileges

./create_mysql_database

./make_mysql_tables

如果mysql不是在本机上,可以增加-h参数指定。默认采用空密码的root用户,可以用-p

参数使其采用密码验证。如果要采用其它用户就只能修改脚本了,很简单的。

默认建立的bacula用户,而且是空密码。推荐还是修改密码。

bacula可以使用任意多的数据库,也就是说你可以使用两个数据库,然后再让这两个数

据库互相备份。

4,运行File Daemon(fd)

配置前先说明一点需要注意的,配置中指定主机地址时,最好使用ip,我配置时使用主机

名貌似不可以。。。而且要是对外的ip,用127.0.0.1不行

fd运行在被备份主机上。配置相当简单,指定哪个Director可以运行调度它,密码是什

么,fd的名字,工作目录,log往哪里发就可以了。修改修改标配就可以了。

5,运行Storage Daemon(sd)

sd运行在接受备份的机器上。配置也相当简单,只是比fd多出了一个device用于指定使

用什么硬件备份数据。可以把多个数据备份到一个device,如果是磁带机备份bacula在恢复的时候会告诉你要使用哪个磁带。因为我使用的是文件备份的模式,所以就给每个

备份配置一个device,把不同的备份放到不同目录去,下面是一个简单文件备份device

配置

Device {

Name = dbdev

Media Type = File   #这个随便写,但是在配置Director中的Storage时,必须写一

样的

Archive Device = /var/bak/db  #备份到哪个目录,必须存在

LabelMedia = yes;                   # 自动label

Random Access = Yes;

AutomaticMount = yes;               # when device opened, read it

RemovableMedia = no;

AlwaysOpen = no;

}

6,运行Director(dir)

这个配置最麻烦,因为所有配置都集中到这里,包括备份工作调度,数据库配置,fd和s

d协作配置都在这里。

Director项目的配置不说了,很简单

Client项目告诉dir去哪里找被备份机器

Client {

Name = dbfd #必须跟fd配置的名字相同

Address = 202.120.x.x

FDPort = 9102

Catalog = 225catalog  #使用哪个数据库存储信息

Password = "6662f353d83dc85013690aefc00f"          # 与fd配置相同即可

AutoPrune = yes                     # 自动清除过期的Jobs/Files

}

Storage项目告诉dir去哪里找接受备份的机器

Storage {

Name = dbsd  #与sd配置相同

Address = 202.120.x.x

SDPort = 9103

Password = "6662f353d83dc85013690aefc00f"

Device = dbdev   #必须在sd中存在

Media Type = File  #必须与sd中相应device相同

}

Schedule项目告诉dir何时调度备份,比较独立,可以在不同的job中重用

Schedule {

Name = dbscd

Run = Level=Full mon at 7:00  #在周一7点作一次全备份

Run = Level=Full fri at 7:00  #在周五7点作一次全备份

Run = Level=Differential sat at 7:00  #在周六7点作一次差异备份

Run = Level=Differential sun at 7:00  #在周日7点作一次差异备份

Run = Level=Differential tue-thu at 7:00  #在周二到周四7点作差异备份

}

当然可以schedule还可以配置很多东西,比如增量备份以及更灵活的时间调度。可以参

考文档。

FileSet项目告诉dir应该备份什么文件,不应该备份什么文件

FileSet {

Name = dbfs

Include = compression=GZIP {  #备份运行fd机器上的/var/db目录,用gzip

压缩,

/var/db/

}

Exclude = {  #不包括所有的.log文件

*.log

}

}

FileSet也可以灵活配置,甚至可以在job运行时才指定备份文件

Catalog告诉dir去哪里找数据库

Catalog {

Name = dbcatalog

dbname = bacula

user = bacula

password = xxxxxxxxx

DB Address = 202.120.x.x   #不要用localhost

DB Port = 3306

}

Pool告诉dir使用哪个Pool备份数据,这个概念比较搞,到配置job的时候会清晰一点。

Pool{

Name = dbpool

Pool Type = Backup

Maximum Volume Jobs = 1    #每次备份使用一个文件

Recycle = yes              #重复使用

AutoPrune = yes            #自动清除

Volume Retention = 15 days  #备份保留时间

Maximum Volumes = 30       #最多保存多少个文件

Recycle Current Volume = yes  #使用最近过期的文件存储新备份

#文件如何命名,下面的格式会产生如下的命名形式db-2004-03-19-id20

Label Format =

"db-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-id${JobId}"

}

Message项目告诉dir如何保存log,以及保存格式

Messages {

Name = Standard

#  mailcommand = "/usr/local/bacula/bin/smtp -h 202.120.x.x -f \"\(Bacula\)

%r\

" -s \"Bacula: %t %e of %c %l\" %r"

#  operatorcommand = "/usr/local/bacula/bin/smtp -h 202.120.x.x -f

\"\(Bacula\)

%r\" -s \"Bacula: Intervention needed for %j\" %r"

#  mail = root@202.120.x.x = all, !skipped

#  operator = root@202.120.x.x = mount

#  console = all, !skipped, !saved

#

# WARNING! the following will create a file that you must cycle from

#          time to time as it will grow indefinitely. However, it will

#          also keep all your messages if they scroll off the console.

#

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

append ="/var/log/bacula.err.log" = error, warning, fatal

}

我保留了两份log,一份包括所有信息,一份只包括错误信息

可以看到,bacula支持把log发到邮箱中~~被我注释掉了。

Job是上面所有配置的一个组合,给用户最大的灵活性配置

Job {

Name = dbjob

Type = Backup   #还有restore之类的类型,也有一些其它选项,可以实现一

些很有意思的功能

Level = Full    #默认备份程度,schedule中的配置会覆盖这里的选择

Client = dbfd

FileSet = dbfs

Messages = Standard

Pool = dbpool

Storage = dbsd

Schedule = dbscd  #如果没有指定schedule,默认不运行,可以通过console

调度

}

还有一个counter的配置。。不配置他也能运行,不说了

7,console运行

console是你动态管理bacula的窗口,配置很简单。运行console可以实现很多很有价值

的管理活动。具体可以参考文档说明。

8,让整个系统运行。

没什么好说的,只要配置正确,就没有什么挫折。不能正常运行就去看看log,bacula的

log非常详细。

9,性能和稳定性。

性能不错,瓶颈明显在带宽,cpu占用不高(不使用gizp)。稳定性尚不清楚,据作者说

非常好。稳定运行一年半载不成问题。

10,有趣的工作。

用bacula你可以实现一个额外的功能,类似tripwire文件系统检查机制。具体看文档。

我说了很多具体看文档~~~~bacula的文档确实很不错,很翔实,如果你需要借重他来备

份,多看看不会错。

11,the end

阅读(2150) | 评论(0) | 转发(0) |

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值