服务器备份方案

备份服务器资料需要考虑的因素(提纲)

1)备份哪些档案

2)选择什么备份的媒介

3)考虑备份的方式

4)备份的频率

5)备份使用的何种备份工具或软件

6)如何恢复备份的数据(灾难恢复方案)





1.备份内容



1.1 哪些linux资料具有备份的意义

1) 系统文件:

/etc/ 整个目录

/home整个目录

/var/spool/mail 

/boot /root

/usr/local/ 或 /opt

2) 服务器的资料

     * 资料设定档案:

       /etc/整个目录/usr/local/整个目录

  * 系統 www + MySQL:

       WWW 資料:/var/www整个目录或 /srv/www整个目录,及系统的使用者的目录

       MySQL : /var/lib/mysql整个目录

* 其他你在 Linux 主机上面提供的資料库资料档案



1.2  服务器信息收集和需要备份哪些数据。



1)服务器信息:


服务器名(IP地址)
服务信息
备份的内容(文件/数据库/操作系统/应用系统及其服务)

公司内部服务器
Mail
 
 

Helpdesk
http/mysql
 

Monitor
 
 

OnlineBBS
Http/mysql/
 

Hsphere

服务器
CP
http/postgreSQL
 

WEB
Http/FTP/named
 

Email
http/mail/mysql/named
 

NFS
 
 








2)公司内部服务器需要备份的文件和内容

Item
Comment








3)Hsphere 服务器系统备份文件和内容

Item
Comment


 


2.方案设计



2.1网络结构:

  服务器网络结构

2.2 备份存储目标的选择:可以是本地磁盘,网络存储设备,也可以通过FTP或者软件异地备份到专门备份数据的服务器上,选择的备份存储目标需考虑三个方面1)速度要求2)存储容量3)资料的可靠性



2.3.备份的方式主要有三种:完全备份(full back)增量备份(Incremental backup), 差别备份(Differential backup)

1)完全备份(full backup)

每天对自己的系统进行完全备份。例如,星期一用一盘磁带对整个系统进行备份,星期二再用另一盘磁带对整个系统进行备份,依此类推。这种备份策略的好处是:当发生数据丢失的灾难时,只要用一盘磁带(即灾难发生前一天的备份磁带),就可以恢复丢失的数据。然而它亦有不足之处,首先,由于每天都对整个系统进行完全备份,造成备份的数据大量重复。这些重复的数据占用了大量的磁带空间,这对用户来说就意味着增加成本。其次,由于需要备份的数据量较大,因此备份所需的时间也就较长。对于那些业务繁忙、备份时间有限的单位来说,选择这种备份策略是不明智的。

2)增量备份(incremental backup)

    星期天进行一次完全备份,然后在接下来的六天里只对当天新的或被修改过的数据进行备份。这种备份策略的优点是节省了磁带空间,缩短了备份时间。但它的缺点在于,当灾难发生时,数据的恢复比较麻烦。例如,系统在星期三的早晨发生故障,丢失了大量的数据,那么现在就要将系统恢复到星期二晚上时的状态。这时系统管理员就要首先找出星期天的那盘完全备份磁带进行系统恢复,然后再找出星期一的磁带来恢复星期一的数据,然后找出星期二的磁带来恢复星期二的数据。很明显,这种方式很繁琐。另外,这种备份的可靠性也很差。在这种备份方式下,各盘磁带间的关系就象链子一样,一环套一环,其中任何一盘磁带出了问题都会导致整条链子脱节。比如在上例中,若星期二的磁带出了故障,那么管理员最多只能将系统恢复到星期一晚上时的状态。

3)差分备份(differential backup)

    管理员先在星期天进行一次系统完全备份,然后在接下来的几天里,管理员再将当天所有与星期天不同的数据(新的或修改过的)备份到磁带上。差分备份策略在避免了以上两种策略的缺陷的同时,又具有了它们的所有优点。首先,它无需每天都对系统做完全备份,因此备份所需时间短,并节省了磁带空间,其次,它的灾难恢复也很方便。系统管理员只需两盘磁带,即星期一磁带与灾难发生前一天的磁带,就可以将系统恢复。在实际应用中,备份策略通常是以上三种的结合。例如每周一至周六进行一次增量备份或差分备份,每周日进行全备份,每月底进行一次全备份,每年底进行一次全备份。

由此可见,各种备份的数据量是不同的:完全备份>差分备份>增量备份。在恢复数据时需要的备份介质数量也不一样:如果使用完全备份方式,只需上次的全备份磁带就可以恢复所有数据;如果使用完全备份+增量备份方式,则需要上次的全备份磁带+上次完全备份后的所有增量备份磁带才能恢复所有数据;如果使用完全备份+差分备份方式,只需上次的全备份磁带+最近的差分备份磁带就可以恢复所有数据。在备份时要根据它们的特点灵活使用。



2.4根据我们现有服务器的运行状况及其资料更新情况,

1)备份的策略:1.1)系统备份1.2)每日备份1.3)远端备份 1.4)使用磁带或其他存储介质备份数据

2)备份计划:

F(Full)-全部备份D(Difference)-差异备份I(Increment)-增量备份


星期日
星期一
星期二
星期三
星期四
星期五
星期六

第一星期
F
D
D
D
D
D
D

第二星期
F
D
D
D
D
D
D

第三星期
F
D
D
D
D
D
D

第四星期
F
D
D
D
D
D
D


  3)轮换策略采用月-周-日轮换策略。这种策略由三级备份组成:日备份、周备份、月备份,日备份为差异备份,月备份和周备份为完全备份。在服务器上建立四个文件夹,每个文件夹存放每周的数据,日备份从周一至周六的差异备份,星期日为完全备份,每月最后一次完全备份,备份后将月数据留档保存,第二个月开始备份数据时候,把上一个月与本月当日对应的数据删除或覆盖,依此类推

2.5关于mysql数据库备份:MYSQL备份数据库主要有两个方法,一个是用MYSQLdump程序,另一个是直接拷贝数据库文件,直接拷贝数据库文件时候需要注意数据库的版本。





2.6备份的实现:

1)本机备份

  1.1) 先确认本机需要备份的资料和需要把资料备份哪个硬盘,并在该硬盘上创建保存备份数据的目录:/disk/backup,并在该目录下设定各种服务(sshd/WWW/vsFTP/named/mysql/postgreSQL)备份的目录名

1.2)建立脚本,通过备份命令如cp,tar,cpio,dump等,

1.3)编辑crontab–e定时触发事件,

建立一个脚本文件 backupdaily.sh

#!/bin/bash

# 每日備份的简单script

# What is this program?

#       This program will backup the following messages:

#       1. MySQL data files ( /var/lib/mysql );

#       2. HTTP's CGI-directory ( /var/www/cgi-bin )

#

# HOW TO RUN THIS PROGRAM?

#       Just put the file into /etc/crontab job,

#       or put this file's link file to /etc/cron.daily!

#

# 0. Get the date messages and backup directory

day=`date +%Y-%m-%d`

basedir="/disk2/backup/daily"

# 1. MySQL  ( PATH = /var/lib/mysql )

/etc/rc.d/init.d/mysqld stop

cd /var/lib

tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null

/etc/rc.d/init.d/mysqld start



# 2. CGI ( PATH = /var/www/cgi-bin )

cd /var/www

tar -zcf "$basedir"/cgi-bin."$day".tar.gz cgi-bin 2> /dev/null



然后更改backupdaily.sh 的可执行的权限 chmod +x backupdaily.sh

     编辑crontab –e定时触发事件,假如每天凌晨3点执行backupdaily.sh

       01 3 * * *  /usr/sbin/ backupdaily.sh

重新启动service crond start



2)备份到远程服务器上(需要增加一台备份服务器Backup server)

2.1)用ssh的公私钥的方法将两台机器用不输入密码的方法就可以访问,在主服务器终端:#ssh-keygen–tdsa

2.2)将在你登陆用户目录的.ssh下生成*.pub的文件copy到server2上,把文件放在server2的.ssh下,并改名为authorized_keys,并赋予.ssh的权限700和.ssh/authorized_ke的权限600

2.3建立脚本,通过rsync命令备份数据

2.4) 编辑crontab–e定时触发事件

2.4.1)第一种方法,加入

*0 * * * * rsync –z –e ssh –delete /home 帐号@主机IP地址:/home/backup

(以上例子假设将server1的home目录与server2的/home/backup做同步

       2.4.2)第二种方法:建立一个文件backup.sh

date=` date +%Y%m%d `
rsync -za -e ssh --delete --progress

/usr/local/mysql/data/nbw1 root@backserverIP:/DESTdir/$date
rsync -za -e ssh --delete --progress

/usr/local/mysql/data/vbb_db root@backserverIP:/DESTdir/$date

      然后更改backup.sh的可执行的权限 chmod +x backup.sh

      编辑crontab –e定时触发事件,假如每天凌晨3点执行backup.sh

       01 3 * * *  /usr/sbin/backup.sh

重新启动service crond start



3)通过备份软件实现:

3.1)备份软件选择:Baculahttp://www.bacula.org/en/

backupPChttp://backuppc.sourceforge.net/

3.2)备份软件的安装和配置:(还需要完善)

用Bacula 备份数据,需要主控服务器、客户机和存储服务器作为主要架构。

3.2.1)Bacula的安装

使用Bacula作为备份软件需要有数据库。一般选mysql作为备份软件的数据库。所以在安装Bacula之前要先安装mysql。下载完mysql-.rpm、mysql-server-.rpm和mysql-devel-.rpm 三个rpm包后,采用rpm –ivh对它们逐个安装。装好mysql后,下载bacula-mysql-2.2.4-1.el5.i386.rpm、bacula-bat-2.2.4-1.el5.i386.rpm、bacula-gconsole-2.2.4-1.el5.i386.rpm和bacula-mtx-2.2.4-1.el5.i386.rpm等四个rpm包。然后逐个安装。再在客户机上安装/bacula-client-2.2.4-1.el5.i386.rpm。

3.2.2)Bacula的配置

Bacula 的三个主要的配置文件是Director的配置文件bacula-dir.conf、 Storage的配置文件bacula-sd.conf、Client的配置文件bacula-fd.conf。



3.数据恢复:数据恢复措施在整个备份制度中占有相当重要的位置,因为它关系到系统在数据丢弃或者数据遭到破坏后能否迅速的恢复。数据恢复措施包括:数据备份制度,数据恢复演习制度及其数据恢复

3.1 数据备份制度:为了预防数据丢失或者遭到破坏的发生,需要做数据备份。每天都需要严格按照已经制定好的备份计划和策略去做好备份的工作。

3.2 数据恢复演习制度

要能够保证数据恢复的可靠性,光进行备份是不够的,还要进行数据恢复演练。

每过一段时间,应进行一次数据恢复演习。可以利用淘汰的机器或多余的硬盘进行灾难模拟,以熟练数据恢复的操作过程,并检验所生成的数据恢复软盘和灾难恢复备份是否可靠。

3.3 数据恢复的解决方案:

   1)服务器硬件问题处理,由于硬件问题导致服务器运行不稳定,需要及时修复或者更换新的配件确保服务器运行稳定.

   2)服务器操作系统破坏和还原

(2.1)系统还原的考量有两种:A)主机需要在很短的时间内立刻就能够还原上线B)我的主机能够在查询到挂点的原因后才正式上线

(2.2)操作系统的还原:对操作系统所缺失的某种服务或者某些文件丢失的还原,或者系统重新安装配置

3)服务器数据破坏或丢失的恢复方法

   准备好最近一次的数据备份数据资料,通过备份软件还原资料的提示进行下去,就可以将服务器数据恢复到最近的状态。

4)数据库被破坏处理方案:

  不管使用哪种备份方法,如果需要恢复数据库,必须让服务器执行更新日志。当系统崩溃后需要恢复数据时,更新日志可以帮助恢复。这样在用备份文件恢复数据到备份时的状态后,我们可以通过运行更新日志中的查询再次运用备份后面的修改,这时可以将数据库中的表恢复到崩溃发生时的状态。

使用mysqldump备份和拷贝数据库时,mysqldump产生的输出可用作mysql的输入来重建数据库。 我们还可以将整个数据库导出到一个单独的文本文件中。在恢复期间,通常按数据库为基础提取更新日志内容,对单个表没有提取更新的选择。

如果使用直接拷贝数据库的备份和拷贝方法,可以使用这些cp、tar或cpio实用程序。当直接拷贝时,我们必须要保证表不在被使用。如果在拷贝过程中,服务器修改了拷贝中的表的内容,则备份失败。保证拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。如果不想关闭服务器,要在执行表检查的同时锁定服务器。如果服务器在运行,相同的制约也适用于拷贝文件。

    恢复过程包括备份文件和更新日志。备份文件可以将表恢复到实施备份时的状态,更新日志包含了用于进行这些修改的查询。恢复过程根据我们需要恢复的信息多少而不同。实际上,恢复整个数据库比单个表跟容易,因为对于数据库运用更新日志比对单个表运用要容易的多。

4. 灾难恢复方案

灾难恢复措施在整个备份制度中占有相当重要的地位。因为它关系到系统在经历灾难后能否迅速恢复。灾难恢复措施包括:灾难预防制度、灾难演习制度及灾难恢复。

4.1灾难预防制度

为了预防灾难的发生,需要做灾难恢复备份。灾难恢复备份与一般数据备份不同的地方在于,它会自动备份系统的重要信息,利用备份的系统资料,才能快速恢复系统.在备份普通数据的同时就可以进行灾难恢复的备份,创建灾难恢复盘,灾难恢复时灾难恢复盘和灾难恢复备份一起使用去恢复系统.

关于灾难预防制度,有两个注意点:

⑴灾难恢复备份应是完全备份

⑵在系统发生重大变化后,建议重新生成灾难恢复软盘,并进行灾难恢复备份。如安装了新的数据库系统,或安装了新硬件等。

4.2 灾难演习制度

要能够保证灾难恢复的可靠性,光进行备份是不够的,还要进行灾难演练。

每过一段时间,应进行一次灾难演习。可以利用淘汰的机器或多余的硬盘进行灾难模拟,以熟练灾难恢复的操作过程,并检验所生成的灾难恢复软盘和灾难恢复备份是否可靠。

4.3 灾难恢复

拥有完整的备份方案,并严格执行以上的备份措施,当您面对突如其来的灾难时,就可以应付自如。

灾难恢复的步骤非常简单:准备好最近一次的灾难恢复软盘和灾难恢复备份数据资料,插入恢复软盘,打开计算机电源,灾难恢复过程就开始了。根据系统提示进行下去,就可以将系统恢复到进行灾难恢复备份时的状态。再利用其他备份数据,就可以将服务器和其他计算机恢复到最近的状态。

猜你喜欢

转载自sak0.iteye.com/blog/985010