01/22/14

数据库备份策略

数据库备份策略

1、备份目的

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

 

2、备份策略

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

 

一、备份方式

1、本机备份

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

 

2、异机容灾备份

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

 

3、异地容灾备份

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

 

二、备份频率

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

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

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

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

三、备份准备

1、创建备份目录

/opt/phpdba/backup/database

2、脚本编写

详见第四项,备份脚本

3、加入计划任务 crontab

4、检查备份情况

5、添加每天检查列表

 

四、备份脚本

#!/bin/sh

LogFile=db$(date +%y%m%d).log

week=`date +%w`

cd /opt/phpdba/backup/database

for DBName in database

do

NewFile=db$DBName$(date +%y%m%d).tar.gz

OldLogFile=db$(date -d ’7 days ago’ +%y%m%d).log

if [ -f $OldLogFile ]

then

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

echo “[$OldLogFile]Delete Old log File Success!” >> $LogFile

else

echo “[$OldLogFile]No Old log File!” >> $LogFile

fi

 

case $week in

1)

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

OldFile=db$DBName$date.tar.gz

if [ -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

;;

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

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

OldFile=db$DBName$date.tar.gz

if [ -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

;;

esac

if [ -f $NewFile ]

then

echo “[$NewFile]The Backup File is 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/$NewFile var

#sh start3310.sh

/opt/phpdba/mysql/bin/mysql -S /tmp/mysq.sock -p’123456′ -e “start slave”

cd /opt/phpdba/backup/database

fi

echo “[$NewFile]Backup Success!” >> $LogFile

dateend=$(date +%s)

let time=$dateend-$datestart

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

filesize=`ls -l /opt/phpdba/backup/ database /$NewFile | awk ‘{print $5}’`

if [ $filesize -eq 20 ]

then

echo “$NewFile Backup File Size:[$filesize] is error”

echo “——————————————-”

fi

echo “The Backup File Size:[$filesize] ” >> $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天。

 

5、备份恢复

1、邮件描述恢复申请需求

2、运维找到相关备份文件

3、领导审核同意

4、实施恢复进程

5、恢复需求总结。比如:程序sql没加limit,导致整个表或者大部分数据更新相同内容。

 

6、备份申请单

 

数据备份申请表

应用系统名称

申请部门

申请日期

申请人

申请描述

备份内容

备份要求

(备份频率、数据保留时间、建议完成时间等)

申请部门负责人

签字

申请审批

备份策略

备份操作人员签字:

                      日期:

审批意见

  技术负责人签字:

                      日期:

申请部门负责人

确认签字

处理日期

 

 

 

 

01/3/14

mysql mtop 监控系统

2014年,第一篇博文,记录下记录搭建的mysqlmtop系统。

1.实时 MySQL 可用性监视
数据库可用性监视和衡量让开发者和DBA们了解它们是否符合所承诺的服务水平。

2.实时 MySQL 状态监视和警报
MySQL MTOP 持续监视 MySQL 的基本状态和性能信息,包括数据库连接状态,启动时间,数据库版本,总连接数,活动进程,QPS,TPS,
进出MySQL数据库的流量信息。在数据库状态异常或偏离正常基准水平时发出报警邮件通知。

3.实时 MySQL复制监视
MySQL MTOP自动发现您的 MySQL 复制拓扑结构,自动监视数据库的延时和binlog信息,让您可以了解所有 MySQL 主服务器和从服务器的性能、可用性和运行状况。并在问题(如从服务器延迟)导致停机前向管理员提供改正建议。

4.远程监视云中的 MySQL
适合于云和虚拟机的设计,使您能远程监视您的MySQL服务器不需要任何远程代理器。

5.直观管理所有 MySQL 服务器
MySQL MTOP提供一个基于 Web 的界面,可令您全面深入地了解数据库性能、可用性、关键活动等;直观地查看一台服务器、自定义的应用组或所有服务器。一组丰富的实时图形和历史图形将帮助您深入了解详细的服务器统计信息。

6.可视化MySQL慢查询分析
监视实时查询性能,查看执行统计信息,筛选和定位导致性能下降的 SQL 代码。结合使用 Information Schema 可直接从 MySQL 服务器收集数据,无需额外的软件或配置。

7.性能监视
监视影响 MySQL 性能的主要指标。如查询缓存命中率,Key_buffer_read_hits,Key_buffer_write_hits,Thread_cache_hits,Key_blocks_used_rate,Created_tmp_disk_tables_rate等信息,根据相关性能指标可以对服务器核心参数进行调整优化。

mtop