数据库备份策略说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库备份策略说明

1、备份目的

保障项目数据安全,防止服务器故障导致数据无法恢复的情况。

2、备份策略

综述:所有mysql实例已经实现了master、slave结构,我们备份一般在slave服务器进行。部分备份完成之后,会上传一份数据到存储机或者其她服务器进行异机及异地备份,另外备份保存一份。

一、备份方式

1、本机备份

该备份模式,适合于快速恢复数据。比如:误操作删除数据等

2、异机容灾备份

该备份模式,能比较好的规避单机故障问题。

3、异地容灾备份

该备份模式,规避大规模IDC故障(比如:火灾、地震、空调故障等)、数据安全问题

二、备份频率

1、主站、blog等核心项目,进行每天完整备份。结合各项目数据库实例master与slave结构,以及当前slave服务器负载与带宽情况,采用crontab定时备份。

2、对于跟商业有关的项目,备份策略同核心项目。

3、非核心项目90%备份策略采用核心项目备份机制,其她采用每周备份策略。

4、对于近期大规模更新数据或者数据库结构变更的数据库实例,采用人员干预备份模式,即走备份申请流程。

三、备份准备

1、创建备份目录

/opt/phpdba/backup/database

2、脚本编写

详见第四项,备份脚本

3、加入计划任务crontab

4、检查备份情况

5、添加每天检查列表

四、备份脚本

#!/bin/sh

Log$(date +%y%m%d)、log

week=`date +%w`

cd /opt/phpdba/backup/database

for DBName in database

do

New$DBName$(date +%y%m%d)、tar、gz

OldLog$(date -d '7 days ago' +%y%m%d)、log

if [ -f $OldLogFile ]

then

rm -f $OldLogFile >> $LogFile 2>&1

echo "[$OldLog Old log !" >> $LogFile

else

echo "[$OldLog Old log File!" >> $LogFile

fi

case $week in

1)

date=`date -d '56 days ago' +%y%m%d`

Old$DBName$date、tar、gz

if [ -f $OldFile ]

then

rm -f $OldFile >> $LogFile 2>&1

echo "[$Old Old !" >> $LogFile

else

echo "[$Old Old Backup File!" >> $LogFile

fi

;;

2|3|4|5|6|0)

date=`date -d '7 days ago' +%y%m%d`

Old$DBName$date、tar、gz

if [ -f $OldFile ]

then

rm -f $OldFile >> $LogFile 2>&1

echo "[$Old Old !" >> $LogFile

else

echo "[$Old Old Backup File!" >> $LogFile

fi

;;

esac

if [ -f $NewFile ]

then

echo "[$New Backup exists,Can't Backup!" >> $LogFile

else

datestart=$(date +%s)

if [ -z $DBPasswd ]

then

mysqldump -u $DBUser --opt $DBName |gzip > $NewFile else

echo "start backup" >> $LogFile

cd /opt/phpdba/data/database

#sh stop3310、sh

/opt/phpdba/mysql/bin/mysql -S /tmp/mysql、sock -p'123456' -e "stop slave;flush tables"

tar zcf /opt/ phpdba /backup/database/$New

#sh start3310、sh

/opt/ phpdba /mysql/bin/mysql -S /tmp/mysq、sock -p'123456' -e "start slave"

cd /opt/phpdba/backup/database

fi

echo "[$New Success!" >> $LogFile

dateend=$(date +%s)

let time=$dateend-$datestart

echo "The Backup Time Is:[$time] " >> $LogFile

`ls -l /opt/ phpdba /backup/ database /$NewFile | awk '{print $5}'`

if [ $ -eq 20 ]

then

echo "$New :[$] is error"

echo "-------------------------------------------"

fi

echo "The Backup :[$] " >> $LogFile

fi

done

echo "-------------------------------------------" >> $LogFile

五、后期实现binlog不设置过期时间,日志全备份与迁移。

3、备份检查

1、每个季度安排专人对备份数据库文件的可用性检查,主要包括文件导入就是否可用。

人工将每份备份导入测试库,并进行可用性测试。后期尽量实现自动化或者半自动化操作。

2、每天程序自动检查,生成备份报告邮件给相关人员。

Python 远程登录每台备份服务器统计备份目录文件状态,生产邮件报告。

3、备份服务器空间监控

主要nagios监控cacti监控

4、备份有效期

现在备份主要采用shell脚本进行备份,分数据库文件压缩打包备份与导出sql文件进行备份两种形式。

规则就是:

1、周一检查就是否存在56天前备份的文件,进行销毁

2、周二至周日检查7天钱备份的文件,进行销毁

3、90%的mysql实例的binlog保存90天;5%的mysql实例永久保存binlog;其她实例保存30天。

相关文档
最新文档