(Mysql数据备份与mysqldump增量备份.doc
文本预览下载声明
Mysql数据备份与mysqldump增量备份
??在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。
?
备份策略一:直接拷贝数据库文件备份策略二:使用mysqldump备份数据库(一个星期全备一次,每天增量备份)
一、?直接拷贝数据文件
?
SQL 语句:FLUSH TABLES WITH READ LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。
?? 为了方便的拷贝出数据文件,我写了一个脚本让其每天运行一次做备份。在/目录下建一个目录用来放置脚本文件,
#mkdir /scripts
创建一个备份数据库的一个脚本文件
#vi backup_mysql.sh
#!/bin/bash
backup_dir=/backup/databak?? #备份文件放置目录backup_target_dir=/backup/dbbackup_logs_dir=/backup/logs?? #备份日志目录db=bcmedia
DATE=$(date +%Y%m%d) #得到10天前的日期ccDATE=$(date -d 10 day ago +%Y%m%d)
echo 开始复制数据表? $backup_logs_dir/$db$DATEecho -----------`date +%Y-%m-%d %H:%M:%S`--------------------? $backup_logs_dir/$db$DATE
cp -R /data/$db $backup_target_dir/?? #mysql数据库的数据目录为/data
echo 开始压缩数据表? $backup_logs_dir/$db$DATEecho ------------------------? $backup_logs_dir/$db$DATE
cd $backup_target_dir
tar -zcvf? $backup_dir/db$DATE.tar.gz $db/ $backup_logs_dir/$db$DATE
if [ $? -eq 0 ]then?echo backup succeed $backup_logs_dir/$db$DATEelse?echo backup fail $backup_logs_dir/$db$DATEfi
echo 开始删除原数据表? $backup_logs_dir/$db$DATE
echo -----------------------? $backup_logs_dir/$db$DATE
rm -rf $backup_target_dir/* echo “删除原数据表” $backup_logs_dir/$db$DATE
echo? 删除10天前数据 $backup_logs_dir/$db$DATE
if [ -e $backup_dir/db$ccDATE.tar.gz ]then?rm -rf $backup_dir/db$ccDATE.tar.gz?echo Delete $backup_dir/db$ccDATE.tar.gz succeed $backup_logs_dir/$db$DATEelse?echo Not found $backup_dir/db$ccDATE.tar.gz file $backup_logs_dir/$db$DATEfiif [ -e $backup_logs_dir/$db$ccDATE ] then?rm -rf $backup_logs_dir/$db$ccDATE?echo Delete $backup_logs_dir/$db$ccDATE succeed $backup_logs_dir/$db$DATEelse?echo Not found $backup_logs_dir/$db$ccDATE file $backup_logs_dir/$db$DATE
fi
?
保存退出并添加可执行的权限#chmod 755 backup_mysql.sh让脚本每天执行一次,每天备份一次数据库,在crontab 里面添加一行
Crontab –e10 4 * * * /scripts/ backup_mysql.sh? #每天4点10分运行脚本备份数据库
????? 还原数据库的时候只要把备份出的文件拷贝到数据库放置数据的目录下,修改权限。重启下数据
显示全部