惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
J
Java Code Geeks
博客园 - 聂微东
B
Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
WordPress大学
WordPress大学
腾讯CDC
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Azure Blog
Microsoft Azure Blog
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
美团技术团队
博客园 - Franky
Google DeepMind News
Google DeepMind News
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
The Cloudflare Blog

博客园 - Bruse

【收藏】Windows 8 Consumer Preview的108个运行命令及简要说明 【转载】菜鸟进阶达人攻略 苹果iPad使用小技巧 Razor语法总结 省空间,教你将C盘iTunes的IPhone备份文件完整的移到其他盘 【翻译】The Repository Pattern with EF code first & Dependeny Injection in ASP.NET MVC3 【原创】越狱以后的iPhone从4.3.3升级到5.0.1时遇到的一些问题的解决办法总结 【转载】SQL Server 中几个有用的特殊函数 EF中DataContext创建的两段代码收藏 T-SQL查询进阶--流程控制语句 【转载】ASP.NET 尖括号 百分号 井号 等号 的用法 【转载】生活常识,人人必备 【转载】ASP.Net程序开发性能优化---数据库优化 关于IIS在使用中遇到的一些问题的总结 【转载】关于IPhone/IPad升级的那点事 【转载】MySql中如何限制日志文件的无限制扩张 【转载】mysql5.1免安装的使用及其配置说明 Apple越狱后超级实用的Cydia常用源推荐 MySQL数据库备份与恢复的详细说明 分享45个海量免费电子书下载网站
【转载】MySql数据备份方案
Bruse · 2011-03-31 · via 博客园 - Bruse

一、主从同步

可以参考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