Protogalaxy

Planet #0

服务器备份策略与Ubuntu 18.04 LTS下的 Bacula部署配置记录

前言

到了东京之后,由于这几年暂时用不到梯子了,而且同时用着两台同样的10刀服务器有点傻吊,所以就把邮件服务器关掉了,并且换了一个更好的配置来当做主力服务器,计划在挂博客的同时,让它兼任Git与CI&CD服务器的角色,顺便再做一做项目管理。同时兼职这么多任务的话,服务器的备份就很重要,因为一旦爆炸了,就要丢失很多的数据,目前Wordpress的博客是有带Schedule的备份插件在支撑着每周的博客备份任务的,但是别的服务并没有,而且Linode的备份服务还挺贵的,所以需要一个靠谱的备份应用与策略,万一服务器哪天被我玩炸了或者自己抽风爆炸了,还可以自行恢复数据。

之前在实习的时候,由于也要用到Linux(Ubuntu 16.04 LTS)测试机,所以之前用过一阵SystemBack来做系统还原点,但是因为SystemBack只能实现简单的系统备份功能,并且作者在2016年就停止了开发,16.04以后的版本并不能用,所以经过一番查询,我最终选择了Bacula作为服务器的备份应用,看起来很靠谱的样子,虽然也可以用Rsync,但是Rsync看起来很难用的样子,所以还是用了Bacula。经过了两天的折腾,终于是完成了Bacula的部署与配置,在这里记录一下,方便自己以后查阅。

备份策略相关

备份种类

全量备份

备份全部选中的文件,忽略其存档属性,是对某一时间点上的所有数据的完全拷贝,比较占用空间和时间。

增量备份

在上次备份后,每次只备份与前一次相比被添加或修改的文件,优点是备份时间较短,占用空间较少,但缺点也很明显,进行数据恢复的时候,必须将目标时间点之后的所有备份依次恢复。

差分备份

差分备份基于全量备份,每次的备份都是基于初次全量备份添加或修改的数据,每次恢复的时候,只需要全量备份的数据与本次差分备份的数据

备份策略

全量备份+增量备份

每周伊始进行全量备份,之后每日进行增量备份,占用空间较少,性能需求较低,但是在恢复数据的时候需要按顺序恢复。

全量备份+差分备份

每周伊始进行全量备份,之后每日进行差分备份,还原数据时只需还原每周初始的全量备份与当天的差分备份,只需两次还原步骤,但是占用空间较全量+增量来说多一点。

目前决定使用的备份策略

使用Bacula做每周的全量备份+差分备份,使用Rsync每月做本地与异机备份数据的同步。

Bacula部署与配置

系统状况记录

  • OS: Ubuntu 18.04 LTS
  • Server: Nginx
  • Database: MySQL(主数据库) + SQLite(Web GUI用户数据库)

部署

Bacula主程序

首先需要选择使用的数据库,Bacula支持PostgreSQL,SQLite,MySQL,Ubuntu貌似默认安装基于PostgreSQL的,所以第一步需要手动安装基于目前数据库的Bacula director。

apt-get install bacula-director-pgsql

apt-get install bacula-director-sqlite3

apt-get install bacula-director-mysql

然后使用下面的命令安装Bacula的完整本体。

apt-get install bacula-server bacula-client

为Bacula创建Backup与Restore的工作文件夹

mkdir [bacula-work-space/backup]

mkdir [bacula-work-space/restore]

下一步需要为Bacula的工作位置与配置文件赋予相应的权限。

sudo chown -R bacula:bacula /bacula-work-space

sudo chmod -R 700 /bacula-work-space

Bacula-Web

安装完Bacula本体后,Bacula-Web的安装就非常简单,只需要先安装SQLite

apt-get install sqlite3

然后按照官网指南安装即可

http://docs.bacula-web.org/en/v8.2.1/index.html#

Bacula的主要组件

Bacula有五个主要组件

  • Director
  • Console
  • File
  • Storage
  • Monitor

Director

Director service负责管理所有的backup,restore,verify,archive操作。管理员可以使用Director来规划Backup schedule与进行Restore操作。Director会以Daemon或者Service的形式在后台运行。

Console

Console service是管理员与Director进行交互的界面,Bacula的各种操作都通过Console来进行。

File

File service安装在要备份的服务器上,每种操作系统都有其特定的File service,它负责在Director请求时为其提供文件数据与其文件属性。File service还负责在Restore操作中还原文件的数据与属性,

Storage

Storage service由提供backup与restore服务的物理设备和软件组成。换句话说,Storage Daemon负责将数据从存储介质中读取或将其写入存储介质。

Monitor

Monitor为管理员提供Bacula的运行状况。

Catalog

Catalog service由负责维护文件索引和卷数据库的软件组成。Catalog允许管理员快速定位和恢复任何所需文件。Catalog也是Bacula与普通的备份软件,例如tar与bru最不同的一点。Catalog维护这所有使用中的Volume,运行中的Job与已存储的File。

Bacula的配置

常用术语

Catalog

用于存储Job,Client,File的概要信息,可以用来帮助管理员确认运行中的Job与其运行状态以及每个备份文件的重要特征。

Client

在Bacula的术语系统中,Client指需要备份的机器,并且他等同于File services与File daemon。

Daemon

守护进程

Director

Bacula的主要守护进程,用来规划与调度Bacula所有的操作

FileSet

定义了需要备份的文件集合。包含需要备份的文件与文件夹,需要排除的文件,怎样保存这些文件(compression, encryption, signatures)

Incremental

包含自上次全量备份/增量备份/差分备份以来所有文件变化的备份。通常在Job中的Level,或者Schedule中指定

Job

用于定义Bacula在进行特定Client的Backup或Restore操作时所进行的操作。包括Type(backup, restore, verify, etc),Level(full, incremental,…),FileSet,备份文件所用到的Storage(Storage device, Media Pool)

Volume

Volume是一个存储单元,通常是一盘磁带或一块硬盘,用来存储Job所备份的数据

配置文件列表

bacula-dir.conf

  1. Job
    • Name
    • JobDefs
    • Level
    • FileSet
    • Schedule
    • RunBeforeJob
    • RunAfterJob
    • Write Bootstrap
    • Priority
  2. JobDefs
    • Name
    • Type
    • Level
    • Client
    • FileSet
    • Schedule
    • Storage
    • Messages
    • Pool
    • SpoolAttributes
    • Priority
    • Write Bootstrap
  3. FileSet
    • Include
      • Options
        • signature
        • compression
      • File
    • Exclude
      • File
  4. Schedule
    • Name
    • Run
  5. Autochanger
    • Name
    • Address
    • SDPort
    • Password
    • Device
    • Media Type
    • Maximum Concurrent Jobs
    • Autochanger
  6. Pool
    • Name
    • Pool Type
    • Recycle
    • AutoPrune
    • Volume Retention
    • Maximum Volume Bytes
    • Maximum Volumes
    • Label Format

bacula-sd.conf

bacula-fd.conf

bconsole.conf

发表评论