mysql备份方案

简介:
+关注继续查看
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://kerry.blog.51cto.com/172631/158476
数据库备份方案
一、主从同步
可以参考http://kerry.blog.51cto.com/172631/110206
二、增量备份:
每天中午12点和晚上12点做一次全备,每隔一小时备份binlog,也就是增量备份,具体操作如下:
Linux下开启binlog
/etc/my.cnf中的mysqld部分加入:
[mysqld]
log-bin=../logs/mysql-bin
max-binlog-size=50M
 
windows下开启binlog
%mysql%/my.ini中的mysqld部分加入:
[mysqld]
log-bin =../logs/mysql-bin
max-binlog-size=50M
 
完整备份脚本 (网友提供)
如果数据库数据量比较大,可以一天全备一次再每隔一小时增量备份一次;
#!/bin/sh
# mysql data backup script #
# use mysqldump --help,get more detail.
BakDir=/backup/mysql
LogFile=/backup/mysql/mysqlbak.log
DATE=`date +%Y%m%d`
echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
cd $BakDir
DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tgz
mysqldump --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables
> $DumpFile
echo "Dump Done" >> $LogFile
tar czvf $GZDumpFile $DumpFile >> $LogFile 2>&1
echo "[$GZDumpFile]Backup Success!" >> $LogFile
rm -f $DumpFile
#delete previous daily backup files:采用增量备份的文件,如果完整备份后,则删除增量备份的文件.
cd $BakDir/daily
rm -f *
cd $BakDir
echo "Backup Done!"
echo "please Check $BakDir Directory!"
echo "copy it to your local disk or ftp to somewhere !!!"
ls -al $BakDir
上面的脚本把mysql备份到本地的/backup/mysql目录,增量备份的文件放在/backup/mysql/daily目录下.
增量备份
增量备份的数据量比较小,但是要在完整备份的基础上操作
增量备份使用bin log,脚本如下:
#!/bin/sh
# mysql binlog backup script
/usr/bin/mysqladmin flush-logs
DATADIR=/var/lib/mysql
BAKDIR=/backup/mysql/daily
###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名
HOSTNAME=`uname -n`
cd $DATADIR
FILELIST=`cat $HOSTNAME-bin.index`
##计算行数,也就是文件数
COUNTER=0
for file in $FILELIST
do
COUNTER=`expr $COUNTER + 1 `
done
NextNum=0
for file in  $FILELIST
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $COUNTER ]
then
echo "skip lastest"
else
dest=$BAKDIR/$base
if(test -e $dest)
then
echo "skip exist $base"
else
echo "copying $base"
cp $base $BAKDIR
fi
fi
done
 
echo "backup mysql binlog ok"
增量备份脚本是备份前flush-logs,mysql会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.
数据还原:
先还原最近的完全备份数据:
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
 
再还原binlog 
./mysqlbinlog --start-date="2009-04-10 17:30:05" --stop-date="2009-04-10 17:41:28" /usr/local/mysql/data/mysql-bin.000002 |mysql -u root -p123456

本文出自 “聆听未来” 博客,请务必保留此出处http://kerry.blog.51cto.com/172631/158476

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
阿里云MySQL线上备份数据恢复
阿里云MySQL线上备份数据恢复
21 0
|
9天前
|
弹性计算 关系型数据库 MySQL
使用HBR快速上手备份ECS/OSS/NAS/MYSQL
本场景带您体验如何通过混合云备份HBR,实现云服务器ECS的备份、恢复和克隆,对象存储OSS的备份和恢复,文件存储NAS的备份和恢复。
32 0
|
11天前
|
SQL 关系型数据库 MySQL
MySQL搭建主从备份读写分离(MySQL5.7案例)
MySQL搭建主从备份读写分离(MySQL5.7案例)
18 0
|
11天前
|
SQL 关系型数据库 MySQL
MySQL视图、索引、备份与恢复、执行计划(三)
MySQL视图、索引、备份与恢复、执行计划(三)
16 0
|
11天前
|
存储 关系型数据库 MySQL
MySQL视图、索引、备份与恢复、执行计划(二)
MySQL视图、索引、备份与恢复、执行计划(二)
13 0
|
11天前
|
存储 关系型数据库 MySQL
MySQL视图、索引、备份与恢复、执行计划(一)
MySQL视图、索引、备份与恢复、执行计划
12 0
|
1月前
|
SQL 安全 关系型数据库
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】4
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】4
209 0
|
1月前
|
XML 关系型数据库 MySQL
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】3
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】3
35 0
|
1月前
|
SQL 关系型数据库 MySQL
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】2
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】2
34 0
|
1月前
|
存储 SQL 关系型数据库
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】1
第19章 数据库备份与恢复【4.日志与备份篇】【MySQL高级】1
156 1
推荐文章
更多
推荐镜像
更多