服务器备份该如何进行
服务器备份进行方法
服务器备份是指针对于服务器所产生的数据信息进行相应的存储备份过程,从而保障数据的安全运行,从狭义上来看信息的价值在于其潜在用途,并会随着时间的推移而改变。数据管理和保护可攫取信息的最大价值,并规避因未按照监管法规保留信息而导致的风险。企业应对当前和将来的信息使用方式进行评估,实施满足其全部需求的流程和技术。
1、完全备份。
每天对自己的系统进行完全备份。当发生数据丢失的灾难时,只要用一盘磁带(即灾难发生前一天的备份磁带),就可以恢复丢失的数据。然而它亦有不足之处,首先,由于每天都对整个系统进行完全备份,造成备份的数据大量重复。这些重复的数据占用了大量的磁带空间,这对用户来说就意味着增加成本。其次,由于需要备份的数据量较大,因此备份所需的时间也就较长。对于那些业务繁忙、备份时间有限的单位来说,选择这种备份策略是不明智的。
2、增量备份。
星期天进行一次完全备份,然后在接下来的六天里只对当天新的或被修改过的数据进行备份。这种备份策略的优点是节省了磁带空间,缩短了备份时间。但它的缺点在于,当灾难发生时,数据的恢复比较麻烦。例如,系统在星期三的早晨发生故障,丢失了大量的数据,那么现在就要将系统恢复到星期二晚上时的状态。这时系统管理员就要首先找出星期天的那盘完全备份磁带进行系统恢复,然后再找出星期一的磁带来恢复星期一的数据,然后找出星期二的磁带来恢复星期二的数据。很明显,这种方式很繁琐。另外,这种备份的可靠性也很差。在这种备份方式下,各盘磁带间的关系就象链子一样,一环套一环,其中任何一盘磁带出了问题都会导致整条链子脱节。比如在上例中,若星期二的磁带出了故障,那么管理员最多只能将系统恢复到星期一晚上时的状态。
3、差分备份。
管理员先在星期天进行一次系统完全备份,然后在接下来的几天里,管理员再将当天所有与星期天不同的数据(新的或修改过的)备份到磁带上。差分备份策略在避免了以上两种策略的缺陷的同时,又具有了它们的所有优点。首先,它无需每天都对系统做完全备份,因此备份所需时间短,并节省了磁带空间,其次,它的灾难恢复也很方便。系统管理员只需两盘磁带,即星期一磁带与灾难发生前一天的磁带,就可以将系统恢复。在实际应用中,备份策略通常是以上三种的结合。例如每周一至周六进行一次增量备份或差分备份,每周日进行全备份,每月底进行一次全备份,每年底进行一次全备份。
备份是任何数据保护计划的一个重要元素,但是当备份需要手工或按需进行时,也可能比较耗时并且容易出错。好多工具可用于数据中心服务器的备份,但Windows
Server提供了一些可靠的备份实用工具,通过微软商店很容易部署。
在Windows服务器上进行自动备份是可以实现的。Windows
Server版本包括四个通用的服务器执行备份和修复方法。管理员可以使用基于GUI的备份管理控制台(wbadminmsc)、备份服务(wbengine)、PowerShell
cmdlet或命令行工具(wbadminexe)。
许多管理员选择使用命令行工具,比如wbadmin因为它实现对备份或恢复特定参数的粒度控制,而不需要处理GUI或许更重要的是,它可以批处理命令行操作和执行脚本,允许管理员行使备份控制以及其他重要的管理功能。
命令行备份工作通常开始于"启用备份"子命令,管理员可以添加或删除备份目标,排除所需的数量和项目,以及控制调度等行为。例如,假设管理员每天下午4点到晚上8点使用wbadmin将服务器磁盘C:和一个名为Volume{dd453d12-22a0-12a8-9a44-204e4d4a4823}的卷备份到名为DiskA的磁盘。wbadmin命令行类似,输入下面一行命令:
wbadmin
enable
backup
–addtarget:DiskA
–schedule:4:00,20:00
–include:c:,Volume{dd453d12-22a0-12a8-9a44-204e4d4a4823}
其他子命令允许管理员禁用备份工作、开始一次性备份、删除备份、开始恢复和执行其他相关任务。如果你喜欢使用PowerShell命令行,如
New-WBPolicy可以创建一个新的备份策略来规定备份什么,在哪里进行备份以及何时进行备份。
预定备份几乎总是比一次性备份可取。预定备份(wbadmin启用备份)和一次性备份(wbadmin开启备份)相比没有内容或性能优势。两个命令设置可以捕获相同的磁盘和卷并备份到相同的目标。然而,预定备份调度减少了命令行出错的可能性,并防止管理员忘记启动备份(或在系统繁忙时开始备份)。备份预订之后,他们可以很容易禁用或更改操作条件。
wbadmin工具与ntbackup工具有什么关系它们是兼容的吗
wbadmin和ntbackup工具类似,但wbadmin是当前备份工具。它取代了过时的ntbackup工具,随Windows
Server
2008之前版本的操作系统发布。由ntbackup创建的备份不能使用wbadmin进行恢复。
鉴于今天流行的Windows
Server
2008和之后的操作系统,ntbackup的兼容性实例越来越罕见。组织通常使用wbadmin创建更多的当前备份,极少使用旧有的备份。然而,受制于冗长合规的组织,即便已经使用wbadmin并升级到了新的Windows服务器版本,在遇到探索或其他数据存储需求时可能仍需要恢复旧有的ntbackup档案。
组织可是使用具有只读功能的ntbackup来访问新操作系统上旧有的ntbackup文档--其不能使用旧格式创建新的备份。
随着数据库在网站建设中的不断应用,现如今绝大多数网站已经离不开数据库支持了,因为数据库不仅可以存储网站内容等信息,还可以存储用户提交的信息。由于这些信息非常宝贵,一旦丢失几乎难以挽回。
所有站长不仅要注意备份服务器上的网页html文件,或者程序代码,还要对数据库文件优先进行备份。
最简单的数据库备份可以通过phpMyAdmin手动备份并下载文件到指定位置,但是对于那些需要每天及时备份的站长来说,手动备份数据库比较麻烦,所以本文讲解一下如何利用国外主机的时钟程序配合shell命令代码实现每天定时备份数据库文件并下载到指定目录。
shell备份数据库
首先创建一个文件命名为:“backupsh”,在其中输入以下命令:
#!/bin/bash
# Set a value that we can use for a datestamp
DATE=`date +%Y-%m-%d` $
# Our Base backup directory
BASEBACKUP="/backup/daily"
for DATABASE in `cat /backup/db-listtxt`
do
# This is where we throw our backups
FILEDIR="$BASEBACKUP/$DATABASE"
# Test to see if our backup directory exists
# If not, create it
if [ ! -d $FILEDIR ]
then
mkdir -p $FILEDIR
fi
echo -n "Exporting database: $DATABASE"
mysqldump --user=root --opt $DATABASE | gzip -c -9 > $FILEDIR/$DATABASE-$DATEsqlgz
echo " [ Done Exporting to local backup, now exporting for remote backup] "
cp $FILEDIR/$DATABASE-$DATEsqlgz /backup/uploads/$DATABASEsqlgz
echo " [Done]"
done
# AutoPrune our backups This will find all files
# that are "MaxFileAge" days old and delete them
MaxFileAge=4
find $BASEBACKUP -name 'gz' -type f -mtime +$MaxFileAge -exec rm -f {} \;
简单来说,这个命令会从db-listtxt文件(一个记录有数据库名称的列表文本文件)中逐行调取数据库并输出+压缩数据文件(datastamped )到/backup/daily/databasename/目录下面;然后该命令有把一个 non-datestamped 文件存储到/backup/uploads/目录下面,并覆盖掉原有的文件。
同时,为了节约资源,该命令会自动删掉4天前的数据库文件。
时钟命令(Cron Jobs)
备份完之后要利用时钟命令将数据库备份以及存储以自动的方式每天执行,首先需要激活backupsh;
10 4 sh / backup/backupsh
这个命令是让服务器每天早上4:10分开始执行数据库备份,当然什么时间执行是取决你的。
然后在时钟命令中输入以下命令:
10 6 /usr/local/bin/ncftpput -Ef /home/admin/ncftpputlogin / /backup/uploads/
这个命令是告诉一个命名为ncftpput的程序(该程序位于ncftputlogin目录下)每天早上6:10将数据库文件上传到/backup/uploads目录下面。ncftpputlogin目录中存有服务器的用户信息,如果你的服务器没有安装ncftp,你可以自己安装一个,很简单。
总结
如果你的数据库文件较大,可能备份的时候需要占用很多服务器资源,所以站长要尽量选择访客最少的时间段执行自动备份命令,比如凌晨4-5点左右。而且要注意给备份留下足够的时间然后执行存储命令。
因为一个服务器可能会遭到天灾人祸,备份的数据库文件要存在不同的服务器或者下载到本地更保险。
linux系统下使用脚本定时备份数据库,代码如下:#!/bin/bash #Setting #设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 #默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第#18行,则默认以tag的方式备份#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxxtgz DBName=mysqlDBUser=rootDBPasswd=123456BackupPath=/home/wang/www/backup/mysql/mysqlbackupLogFile=/home/wang/www/backup/mysql/dblogDBPath=/var/lib/mysql/#BackupMethod=mysqldump#BackupMethod=mysqlhotcopy#BackupMethod=tar#Setting EndNewFile="$BackupPath"db$(date +%y%m%d)tgz DumpFile="$BackupPath"db$(date +%y%m%d) OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago')tgz echo "-------------------------------------------" >> $LogFile echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile echo "--------------------------" >> $LogFile #Delete Old Fileif [ -f $OldFile ] then rm -f $OldFile >> $LogFile 2>&1 echo "[$OldFile]Delete Old File Success!" >> $LogFile else echo "[$OldFile]No Old Backup File!" >> $LogFile fi if [ -f $NewFile ] then echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile else case $BackupMethod in mysqldump) if [ -z $DBPasswd ] then mysqldump -u $DBUser --opt $DBName > $DumpFile else mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; mysqlhotcopy) rm -rf $DumpFile mkdir $DumpFile if [ -z $DBPasswd ] then mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1 else mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1 fi tar czvf $NewFile $DumpFile >> $LogFile 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile rm -rf $DumpFile ;; ) /etc/initd/mysqld stop >/dev/null 2>&1 tar czvf $NewFile $DBPath >> $LogFile 2>&1 /etc/initd/mysqld start >/dev/null 2>&1 echo "[$NewFile]Backup Success!" >> $LogFile ;; esacfiecho "-------------------------------------------"echo#lftp -f lftpsh 如果有FTP可同时上传ftp中。再利用crontab命令生成/var/spool/cron/root 文件:#crontab –e //打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令//m h dom mon dow command //具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)//如: 10 02 /home/backup/autobackupmysqlsh (表示零晨二点十分执行备份脚本)
0条评论