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;