bacula总体概述 (高性能linux服务器架构)

 1.1 bacula是什么

  Bacula是一款开源的跨平台网络备份工具,它提供基于企业级的客户端和服务器的备份和恢复解决方案.

 1.2 bacula适合哪些用户

数据业务量巨大,每天都在迅速增长,还需要以tar打包方式进行低级备份而且没有异地容灾策略,就考虑使用baculaBacula是一个完美的增量备份功能,同时还支持远程容灾备份,可以通过bacula,可以将数据备份到任意一个远程的主机上,用户只需要对bacula进行简单的设置即自动完成数据备份.

1.3 bacula的功能特点

 1.支持多种备份方式

(1)完全备份

完全备份就是完整的备份业务数据。

优点:当数据丢失时,只是需要当时的备份就能还原

缺点:由于每天对整个系统进行完整备份,难免造成备份数据大量重复。不但占用大量空间成本也要增加,备份时间长。

(2)增量备份

增量备份以上次备份为基准的备份方式,只是对每次更新或者修改的时间进行备份

优点:只是备份每天更新或者增加的数据数据量小节点了空间节省成本。

缺点:恢复过程比较麻烦。

(3)差异备份

差异备份是以完全备份为基准的一种备份方式

假如星期一至星期五,星期1进行了一次完整备份,星期二会把星期1到星期2期间的数据不同的数据进行备份以此类推星期3会把星期1到星期3的不同的数据进行备份。

优点:避免了上面两种备份的缺陷。同时又具有上面两种方式的所有有点,他无需每天对系统做完全备份,因此备份数据量小,备份时间短,节省空间,灾难恢复简单只需要两个备份就可以将系统回复。

2.支持多种恢复方式

1)可以恢复某个目录丶文件到制定的位置,恢复时自动恢复数据的原始结构。

2)可以恢复所有数据到指定的位置,恢复时自动恢复数据的原始结构。

3)可以保存恢复文件或目录的权限丶属主丶访问时候等属性。

4)可以恢复某个时间点的备份到制定的位置,恢复时自动恢复数据的原始结构。

 3.支持多种文件系统的备份与恢复

  Bacula支持文件系统有:ext4ext3ext2reiserfsxfsjfssmbfsiso9660ntfs等。

4.支持各种备份介质

   1)支持把备份写到磁盘

   2)支持把备份写到磁带

   3)支持把备份写到磁盘阵列

   4)支持把备份写到光盘

 5.支持多种操作系统

LinuxRHEL/SUSE/CentOS

UNIX

Mac

Windowswindows98windows MeWindows NTWindows XPWindows2000Windows2003

6.强大的内部功能

1)支持定时备份,无需人工干预。

2)支持终端命令控制,更加灵活

3)支持正则表达式,可以对备份文件进行更严格的匹配

4)支持MD5SHA1两种签名校建

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 DaemonstorageDaemonfileDaemon的守护进程。

1. bacula备份恢复流程如下:

首先,通过Console连接到Director端,备份恢复操作开始.

接着,Director端从自己的数据库中调出记录信息,如果验证通过,则允许连接存储端SD.

然后,客户端FD负责验证Director的操作许可,如果验证通过,则允许连接存储端SD

最后,客户端FD根据Director发出的请求去连接SD,将FD端的数据备份到存SD制定的存储介质上,或者将SD端存储介质中的数据传回到客户端FD制定的位置上,完成备份恢复过程。

需要注意,在bacula的整个备份恢复系统中,客户端FDSD需要保证网络连接畅通,为了保证备份以及恢复数据的速度和效率,最好让客户端FDSD处于在一个网段中。
 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

[root@localhostmysql-5.1.44]# ./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

转载于:https://blog.51cto.com/brotherxing/1178032

开源网络备份软件bacula学习笔记相关推荐

  1. 开源网络备份软件bacula(安装bacula)

    一. bacula的几种网络备份拓扑      前面文章介绍了bacula有5个组成部分,在实际的应用中,没有必要将5个部分分别放在不同的服务器上,它们之间的某些部分是可以合并的,常见的bacula部 ...

  2. 开源网络备份软件bacula数据恢复(二)

    一.bacula的备份恢复过程之完全备份. 1.创建卷组 连接到bacula的控制端,执行备份恢复操作 [root@baculaserver etc]# /usr/local/bacula/sbin/ ...

  3. 关于bacula网络备份软件的安装以及配置1

    最近在网上看到有一个强大的网络备份软件bacula,于是就找了一些资料来看,发现网上的资料寥寥无几啊,凭着自己的理解就在本地环境下面进行了测试,最后终于实现了网络的备份以及还原功能,当然此文章也有不足 ...

  4. 软件调试学习笔记(七)—— 单步步入单步步过

    软件调试学习笔记(七)-- 单步步入&单步步过 单步步入 设置单步异常 处理单步异常 实验1:单步异常的设置与处理 单步步过 实现思路 实验2:实现单步步过 单步步入 描述: 单步步入的实现依 ...

  5. 软件调试学习笔记(六)—— 硬件断点

    软件调试学习笔记(六)-- 硬件断点 硬件断点 设置硬件断点 触发硬件断点 处理硬件断点 实验:硬件断点的设置与处理 硬件断点 描述: 与软件断点与内存断点不同,硬件断点不依赖被调试程序,而是依赖于C ...

  6. 软件调试学习笔记(五)—— 软件断点内存断点

    软件调试学习笔记(五)-- 软件断点&内存断点 调试的本质 软件断点 软件断点的执行流程 分析INT 3执行流程 实验:处理软件断点 内存断点 内存断点的执行流程 实验:处理内存断点 调试的本 ...

  7. 【软考中级】软件设计师学习笔记

    软件设计师学习笔记 计算机系统知识 程序语言设计 数据结构 操作系统 软件工程基础知识 结构化开发方法 创建型设计模式 行为型设计模式 结构型设计模式: 算法设计与分析 数据库技术基础 网络与信息安全 ...

  8. 三代组装软件canu学习笔记

    三代组装软件canu学习笔记 (2017-08-07 14:17:43) 转载▼   分类: 三代 1:这个组装软件起源于PBcR包含在Celera Assembler中(http://wgs-ass ...

  9. 软件调试学习笔记(四)—— 异常的处理流程

    软件调试学习笔记(四)-- 异常的处理流程 要点回顾 异常的处理流程 实验1:理解调试器与异常的关系 未处理异常:最后一道防线 实验2:理解UnhandledExceptionFilter执行流程 实 ...

最新文章

  1. tensorflow生成对抗网络
  2. 多家IT企业通过CNNIC“可信网站”验证
  3. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
  4. 使用Scalatra创建Scala WEB工程
  5. scp会覆盖同名文件吗_你会Hypermesh一键式完成几何文件到求解文件的输出吗?
  6. rserve php,使用Rserve远程执行R脚本
  7. 人工蜂群算法python_改进的人工蜂群算法解决聚类问题(在Python中的分步实现)...
  8. ASP.NET MVC中,通用的异常处理
  9. [linux]CentOS安装pre-built Nginx
  10. spring ,springmvc的常用标签注解
  11. Educational Codeforces Round 51: F. The Shortest Statement(最短路+LCA)
  12. 二分搜索 POJ 1064 Cable master
  13. 【SGU495】Kids and Prizes(概率dp)
  14. 好用不贵的蓝牙耳机有哪些?三百以内好用的蓝牙耳机推荐
  15. 2016.11.16回顾
  16. 超级警探大战悍匪2java_Java笔记一
  17. Mac苹果移动硬盘数据丢失怎么恢复?
  18. java模拟魔兽世界武器掉落
  19. 移动开发福利:GMTC全球移动技术大会解决方案专场免费报名!
  20. 数据结构——二叉树的实现

热门文章

  1. 消息队列之 RabbitMQ
  2. 机器学习中的优化算法!
  3. Swin Transformer升级版来了!30亿参数,刷榜多项视觉任务,微软亚研原班人马打造...
  4. 全球首辆飞行摩托开卖!飞行高度可达4572米,243万元一辆,你敢开吗?
  5. 爷青回!GAN生成的超级马里奥关卡,可以永不通关的那种!
  6. 这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...
  7. 如何识别能把桥压塌的大车?快看!能救命!
  8. 【每日一算法】搜索插入位置
  9. ValueError: not enough values to unpack (expected 3, got 0)问题
  10. themleaf返回可以带目录结构