bacula总体概述 (高性能linux服务器架构)
1.1 bacula是什么
Bacula是一款开源的跨平台网络备份工具,它提供基于企业级的客户端和服务器的备份和恢复解决方案.
1.2 bacula适合哪些用户
数据业务量巨大,每天都在迅速增长,还需要以tar打包方式进行低级备份而且没有异地容灾策略,就考虑使用bacula。Bacula是一个完美的增量备份功能,同时还支持远程容灾备份,可以通过bacula,可以将数据备份到任意一个远程的主机上,用户只需要对bacula进行简单的设置即自动完成数据备份.
1.3 bacula的功能特点
1.支持多种备份方式
(1)完全备份
完全备份就是完整的备份业务数据。
优点:当数据丢失时,只是需要当时的备份就能还原
缺点:由于每天对整个系统进行完整备份,难免造成备份数据大量重复。不但占用大量空间成本也要增加,备份时间长。
(2)增量备份
增量备份以上次备份为基准的备份方式,只是对每次更新或者修改的时间进行备份。
优点:只是备份每天更新或者增加的数据数据量小节点了空间节省成本。
缺点:恢复过程比较麻烦。
(3)差异备份
差异备份是以完全备份为基准的一种备份方式。
假如星期一至星期五,星期1进行了一次完整备份,星期二会把星期1到星期2期间的数据不同的数据进行备份以此类推星期3会把星期1到星期3的不同的数据进行备份。
优点:避免了上面两种备份的缺陷。同时又具有上面两种方式的所有有点,他无需每天对系统做完全备份,因此备份数据量小,备份时间短,节省空间,灾难恢复简单只需要两个备份就可以将系统回复。
2.支持多种恢复方式
1)可以恢复某个目录丶文件到制定的位置,恢复时自动恢复数据的原始结构。
2)可以恢复所有数据到指定的位置,恢复时自动恢复数据的原始结构。
3)可以保存恢复文件或目录的权限丶属主丶访问时候等属性。
4)可以恢复某个时间点的备份到制定的位置,恢复时自动恢复数据的原始结构。
3.支持多种文件系统的备份与恢复
Bacula支持文件系统有:ext4丶ext3丶ext2丶reiserfs丶xfs丶jfs丶smbfs丶iso9660和ntfs等。
4.支持各种备份介质
1)支持把备份写到磁盘
2)支持把备份写到磁带
3)支持把备份写到磁盘阵列
4)支持把备份写到光盘
5.支持多种操作系统
Linux(RHEL/SUSE/CentOS)
UNIX
Mac
Windows(windows98丶windows Me丶Windows NT丶Windows XP丶Windows2000和Windows2003)
6.强大的内部功能
1)支持定时备份,无需人工干预。
2)支持终端命令控制,更加灵活
3)支持正则表达式,可以对备份文件进行更严格的匹配
4)支持MD5和SHA1两种签名校建
5)支持压缩备份,备份效率更高,传输更快。
6)支持报表自动绘制功能,可以自动生成备份报表和恢复报表.
4.1.4 bacula的工作原理
1.bacula基本组成
一个完整的bacula备份系统,由下面5个部分组成。
1) DirectorDaemon:负责监听所有的备份丶恢复丶验证丶存档事务,以及定制备份和恢复文件计划等,并且将整个系统的运行状态记录在数据库中。推荐使用Mysql数据库
2) Storage Daemon(SD):在备份数据时,用来制定备份和恢复备份到存储介质。
主要负责将备份到存储上,数据恢复时从存储中传送出去配置文件bacula-sd.conf
3) File Daemon(FD):是一个安装在需要备份的数据的机器上作为守护进程,在备份数据时它负责把文件传出,在恢复数据时,他负责接收数据并执行恢复操作,配置文件为bacula-fd.conf
4) Monitor:是一个进程监控端,负责监控Dirctor Daemon丶storageDaemon和fileDaemon的守护进程。
1. bacula备份恢复流程如下:
首先,通过Console连接到Director端,备份恢复操作开始.
接着,Director端从自己的数据库中调出记录信息,如果验证通过,则允许连接存储端SD.
然后,客户端FD负责验证Director的操作许可,如果验证通过,则允许连接存储端SD。
最后,客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD制定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD制定的位置上,完成备份恢复过程。
需要注意,在bacula的整个备份恢复系统中,客户端FD和SD需要保证网络连接畅通,为了保证备份以及恢复数据的速度和效率,最好让客户端FD和SD处于在一个网段中。
2.bacula各个组成部分的关联性
在baclua的个组成部分中,3个主要配置文件是互相关联的,修改任何一个配置文件,另外两个文件都要进行相应的改动。
Bacula配置文件之间的关系
安装bacula
bacula的几种网络备份拓扑
常见的部署结构如下几种:
1) Director 与SD以及Console在一台机器上,而客户端FD在另外一台机器上,当然客户端FD可以在一台或者多台机器上
2) Director与console在一台机器上,SD在一台机器上,客户端FD在一台或者多台机器上。
3) Director与客户端FD丶SD以及Console端都在一台机器上,也就是服务器自己备份自己,数据保存本机。
编译安装bacula
1.1第一种bacula部署结构进行介绍。
主机名 IP地址 操作系统 应用角色 |
baculaServer 192.168.0.1 Centos release 6.3 Director 、SD、Console baculaClient 192.168.0.2 Centosrelease6.3 FD |
1.2安装拓扑
1.3现在最新版本bacula
可以Bacula站点(http://www.bacula.org/)获取最新的版本
1.4 部署操作过程
1.4.1安装mayal数据库
[root@localhost]#yum –y install *gcc* libtermcap-devel make
[root@localhost Mysql]# tar –zxvf mysql-5.1.44.tar.gz –C /usr/src/
[root@localhost Mysql]# cd /usr/src/mysql-5.1.44/
[root@localhost mysql-5.1.44]# userdel –r mysql
[root@localhost mysql-5.1.44]# useradd –M –s /sbin/nologin mysql
[[email protected]]# ./configure –prefix=/usr/local/mysql
–with-mysqld-user=mysql
[root@localhost mysql-5.1.44]# make && make install
[root@localhost mysql-5.1.44]# cp support-files/my-medium.cnf /etc/my.cnf
[root@localhost mysql-5.1.44]# /usr/local/mysql/bin/mysql_install_db –user=mysql
[root@localhost mysql-5.1.44]# chown –R root:mysql /usr/local/mysql/
[root@localhost mysql-5.1.44]# chown –R mysql /usr/local/mysql/var/
[root@localhost mysql-5.1.44]# echo ’ /usr/local/mysql/lib/mysql/ ‘>>/etc/ld.so.conf
[root@localhost mysql-5.1.44]# ldconfig
[root@localhost mysql-5.1.44]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-5.1.44]# chmod o+x /etc/init.d/mysqld
[root@localhost mysql-5.1.44]# chkconfig –add mysqld
[root@localhost mysql-5.1.44]# chkconfig mysqld on
[root@localhost mysql-5.1.44]# service mysqld start
[root@localhost ~]# export PATH=$PATH:/usr/local/mysql/bin/
[root@localhost ~]# echo “export PATH=$PATH:/usr/local/mysql/bin/” >> /etc/profile
[root@localhost ~]# mysqladmin –u root password 123456
1.4.2服务器端安装bacula:
软件包:bacula-5.2.13.tar.gz
[root@localhost]#tar –zxvf bacula-5.2.13.tar.gz –C /usr/src
[root@localhost]#cd /usr/src/ bacula-5.2.13
[root@localhost bacula-5.2.13]# ./configure --prefix=/usr/local/bacula-5.2.13/ \
> --enable-smartalloc \ ###启用此选项,有助于检测内存泄漏
> --enable-tray-monitor \ ###启用托盘监控工具(图形界面使用)
> --with-mysql=/usr/local/mysql/ \ ##启用Bacula使用mysql数据库
> --enable-conio # Tells Bacula to enable building the small, light weight readline replacement routine. It is generally much easier to configure than readline, although, like readline, it needs either the termcap or ncurses library
#make
#make install
#make install-autostart #添加自动启动程序
[root@localhost ~]# ls /etc/init.d/ |grep bacula #查看是否成功
bacula-dir
bacula-fd
bacula-sd
1.4.3建立Bacula数据库
cd /usr/local/bacula-5.2.13/etc
./grant_mysql_privileges –p //数据数据库root密码
./create_mysql_database –p.
./make_mysql_tables –p
作为存储服务器兼控制台,现在需要依次对bacula-dir.conf(全局)bacula.sd.conf(存储)和bconsole.conf(控制台)配置文件进行修改。
1.配置bacula和Console端
vim /usr/local/bacula-5.2.13/etc/bconsole.conf
Director {
Name = Bacula-dir #控制端名称,在下面的bacula-dir.conf和bacula-sd.conf文件中引用
DIRport = 9101 #控制端服务器端口
address = 192.168.0.1 #控制端服务器IP
Password = "lhMnFpB00CE+UgusQr7qRWQ2yFdF72KIjm9f240G7vkb"
#控制端密码文件
}
1. 配置bacula的Director端
bacula-dir.conf是Director端的配置文件,也是bacula的核心配置文件,这个文件非常复杂,一共分为10个逻辑断,分别是
1、 Director,定义全局设置
2、 Catalog,定义后台数据库
3、 Jobdefs,定义默认执行任务
4、 Job,定义一个备份或者恢复任务
5、 Fileset,定义备份哪些数据,不备份哪些数据
6、 Schedule,定义备份时间策略
7、 Pool,定义Job使用的池属性
8、 Clinet,定义要备份的主机地址
9、 Storage,定义数据的存储方式
10、 Messges,定义发送日志报告和记录日志的位置
mv bacula-dir.conf bacula-dir.conf.bak
把配置文件中的空格和注释全部去掉 这样配置不会那么乱
grep -v ^# bacula-dir.conf.bak | sed "/^[[ :space: ]]* $/d" | sed /^$/d > bacula-dir.conf
Director { # 定义Bacula的全局配置
Name = localhost.localdomain-dir
DIRport = 9101 # where we listen for UA connections
QueryFile = "/usr/local/bacula-5.2.13/etc/query.sql"
WorkingDirectory = "/usr/local/bacula-5.2.13/opt/bacula/working"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 1 #定义一次能处理的最大并发数
Password = "HHUmsFj3mA2LxJwdEX+iIMOuNXDlBlAF30IBhqbQ1ogc" # Console password
Messages = Daemon
}
Job { #自定义任务
Name = "wanzhengbeifen"
Type = Backup
Level = Full #备份等级完整备份
Client = Client1 #定义要备份的客户端
FileSet = "Full Set" #定义要备份的内容
Schedule = "WeeklyCycle" #定义备份的时间
Storage = File #定义备份的存储
Messages = Standard #消息类型
Pool = File #地址池
Priority = 10 #优先级
Write Bootstrap = "/usr/local/bacula-5.2.13/opt/bacula/working/Client1.bsr"
备份路径
}
Job {
Name = "zengliangbeifen"
Type = Backup
Level = Incremental #增量备份
Client = Client1
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = File
Priority = 10
Write Bootstrap = "/usr/local/bacula-5.2.13/opt/bacula/working/Client1.bsr"
}
Job {
Name = "chayibeifen"
Type = Backup
Level = Differential #差异备份
Client = Client1
FileSet = "Full Set"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = File
Priority = 10
Write Bootstrap = "/usr/local/bacula-5.2.13/opt/bacula/working/Client1.bsr"
}
Client {
Name = Client1 #定义要备份的客户机
Address = 192.168.0.2 #备份客户机的IP
FDPort = 9102
Catalog = MyCatalog
Password = "123" # 验证密码要和bacula-fd.conf里面密码一样
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}
Job {
Name = "RestoreClient1"
Type = Restore #还原任务
Client=Client1
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /tmp/test
}
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5 #加密方式
}
File = /boot #定义备份的路径
}
Exclude {
File = /usr/local/bacula-5.2.13/opt/bacula/working
File = /tmp
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sun at 23:05 #第一周的周日晚23:05分进行完全备份
Run = Differential 2nd-5th sun at 23:05 #第2-5周晚23:05进行差异备份
Run = Incremental mon-sat at 23:05 #所有周一至晚23:05进行增量备份
}
Storage {
Name = File
Address = 192.168.0.1 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "123"
Device = FileStorage
Media Type = File
}
Bacula-sd.conf文件的配置
[root@localhost etc]# grep -v ^# bacula-sd.conf | sed "/^[[ :space: ]]* $/d" | sed /^$/d
Storage { # definition of myself
Name = localhost.localdomain-sd
SDPort = 9103 # Director's port
WorkingDirectory = "/usr/local/bacula-5.2.13/opt/bacula/working"
Pid Directory = "/var/run"
Maximum Concurrent Jobs = 20
}
Director {
Name = localhost.localdomain-dir
Password = "123"
}
Director {
Name = localhost.localdomain-mon
#Password = "9UMXS0YU2OFIkiJUA0OHWtwR9FPP/QICL3U4Fbta5+7Z"
Password = "123"
Monitor = yes
}
Device {
Name = FileStorage
Media Type = File
Archive Device = /tmp/backup/ #备份的目录
LabelMedia = yes; #通过Label命令来建立卷文件
Random Access = Yes; #设置是否采用随机访问存储介质,选择yes
AutomaticMount = yes; #表示当前存储设备打开时,是否自动使用它,yes
RemovableMedia = no; #表示是否支持可移动设备这里选择NO
AlwaysOpen = no; #是否确保tap设备总是可用,这里没有tap设备,因此no
}
Messages {
Name = Standard
director = localhost.localdomain-dir = all
}
需要电子版请访问http://bbs.itlinghang.com/forum.php?mod=viewthread&tid=452