1、Bacula简介mysql
Bacula是一款开源的跨平台企业级备份软件。它采用C/S架构,能够实现对数据备份、恢复及校验;支持彻底备份、增量备份和差别备份;支持多种操做系统和文件系统(例如windows和linux系统);支持定时备份,无需人工干预;支持终端命令控制,更加灵活;支持正则表达式,能够对备份文件进行更严格的匹配;支持MD5和SHA1签名校验;支持压缩备份和断点续传功能。linux
1.1 Bacula的组成c++
Bacula主要由如下六部份组成:正则表达式
Bacula Director:sql
全局设置。负责备份的验证、运行、计划任务、备份和恢复的各类定义和执行操做。配置文件是bacula-dir.conf。如下简称主控端。数据库
Bacula Console:vim
终端管理控制台。经过该控制台链接Bacula Director查看或执行系统的备份、恢复操做。配置文件是bconsole.conf。如下简称console端。windows
Bacula File:bash
须要备份的机器。安装在须要备份数据的机器上的守护进程,在备份数据时,它负责把文件传出,在恢复数据时负责接收数据并执行恢复操做。配置文件为bacula-fd.conf。如下简称客户端。架构
Bacula Storage:
备份文件的存放介质。负责将数据备份到存储介质上,而在数据恢复时,负责将数据从存储介质中传送出去。其配置文件为bacula-sd.conf。如下简称介质端。
Bacula Monitor:
备份进程的监控。显示进程的备份或恢复时的状态信息。如下简称监控端。
Catalog:备份信息元数据。用于记录系统运行的状态信息。
1.2 Bacula的恢复流程
经过上图可知,系统的恢复流程以下:
一、经过Console链接到Director端,开始恢复操做。
二、Director端从本身的Catalog中取出备份的记录信息,同时对存储端SD和客户端FD的任务进行协调。
三、客户端FD验证Director的操做许可,验证经过后链接到存储端SD。
四、客户端FD根据Director发出的请求去链接SD,将FD端的数据按恢复要求从新存储到SD端或FD端。
2、Bacula安装
2.1 系统环境
CentOS7最小化安装
主机名 |
IP地址 |
系统版本 |
角色 |
bacula-test |
192.168.17.100 |
Centos7 |
DIR、SD、Console |
192.168.17.98 |
Windows10 |
FD |
2.2 系统更新
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean yum makecache yum update
2.3 禁用selinux
vim /etc/selinux/config
2.4 下载安装包
wget http://www.bacula.com.br/wp-content/uploads/2016/01/bacula-7.4.0.tar.gz -P /root tar zxvf bacula-7.4.0.tar.gz
2.5 安装相关软件包
yum install gcc-c++ readline-devel zlib-devel lzo-devel libacl-devel \ mt-st mtx postfix libssl-dev mariadb-devel mariadb-server
2.6 编译安装
cd bacula ./configure --disable-conio --bindir=/usr/bin --sbindir=/usr/sbin \ --with-scriptdir=/usr/libexec/bacula/ \ --with-working-dir=/var/spool/bacula/ \ --with-logdir=/var/log --enable-smartalloc --with-mysql \ --with-hostname=192.168.17.100 --sysconfdir=/etc/bacula --with-systemd make make install make install-autostart
完成后检查相关文件和目录是否存在。能够参考编译的参数查找对应的文件和目录,以下图所示。
2.7 MYSQL数据库配置
数据库MariaDB经过yum的方式安装,版本是5.5.47,如下的数据库设置针对该版本,其它版本的数据库请对照修改。
vim /etc/my.cnf
mysql_secure_installation mysql -u root -p create database bacula; set password for bacula@'%'=password('password'); set password for bacula@'localhost'=password('password'); grant all privileges on bacula.* to ‘bacula’@’%’; grant all privileges on bacula.* to ‘bacula’@’localhost’; select user,host,password from mysql.user;
/usr/libexec/bacula/grant_mysql_privileges -p /usr/libexec/bacula/create_mysql_database -p /usr/libexec/bacula/make_mysql_tables -p use bacula; show tables;