Mysql数据备份与mysqldump增量备份_第1页
Mysql数据备份与mysqldump增量备份_第2页
Mysql数据备份与mysqldump增量备份_第3页
Mysql数据备份与mysqldump增量备份_第4页
Mysql数据备份与mysqldump增量备份_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mysql数据备份与mysqldump增量备份在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。备份策略一:直接拷贝数据库文件备份策略二:使用mysqldump备份数据库(一个星期全备一次,每天增量备份)一、直接拷贝数据文件直接拷贝数据文件最为直接、快速、方便,但缺点是基本上不能实现增量备份。为了保证数据的一致性,需要在备份文件前,执行以下SQL语句:FLUSHTABLESWITHREADLOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回原来的数据库目录下即可。为了方便的拷贝出数据文件,我写了一个脚本让其每天运行一次做备份。在/目录下建一个目录用来放置脚本文件,为了方便的拷贝出数据文件,我写了一个脚本让其每天运行一次做备份。在/目录下建一个目录用来放置脚本文件,#!/bin/bashbackup_dir二/backup/databak #备份文件放置目录backup_target_dir=/backup/dbbackup_logs_dir=/backup/logs #备份日志目录db=bcmediaDATE=$(date+%Y%m%d)#得到10天前的日期ccDATE=$(date""_d10dayago"+%Y%m%d)echo""开始复制数据表">>$backup_logs_dir/$db$DATEecho"" 'date+"%Y-%m-%d%H:%M:%S""' "">>$backup_logs_dir/$db$DATEcp-R/data/$db$backup_target_dir/ #mysql数据库的数据目录为/dataecho""开始压缩数据表">>$backup_logs_dir/$db$DATEecho"" "" >>$backup_logs_dir/$db$DATEcd$backup_target_dirtar-zcvf$backup_dir/db$DATE.tar.gz$db/>>$backup_logs_dir/$db$DATE辻[$?-eq0]thenecho""backupsucceed">>$backup_logs_dir/$db$DATEelseecho""backupfail">>$backup_logs_dir/$db$DATEfiecho"开始删除原数据表">>$backup_logs_dir/$db$DATEecho" " >>$backup_logs_dir/$db$DATErm-rf$backup_target_dir/*&&echo“删除原数据表”>>$backup_logs_dir/$db$DATEecho"删除10天前数据"〉〉$backup_logs_dir/$db$DATEif[-e$backup_dir/db$ccDATE.tar.gz]thenrm-rf$backup_dir/db$ccDATE.tar.gzecho"Delete$backup_dir/db$ccDATE.tar.gzsucceed"〉〉$backup_logs_dir/$db$DATEelseecho"Notfound$backup_dir/db$ccDATE.tar.gzfile"〉〉$backup_logs_dir/$db$DATEfiif[-e$backup_logs_dir/$db$ccDATE]thenrm-rf$backup_logs_dir/$db$ccDATEecho"Delete$backup_logs_dir/$db$ccDATEsucceed"〉〉$backup_logs_dir/$db$DATEelseecho"Notfound$backup_logs_dir/$db$ccDATEfile"〉〉$backup_logs_dir/$db$DATEfi保存退出并添加可执行的权限#chmod755backup_mysql.sh让脚本每天执行一次,每天备份一次数据库,在crontab里面添加一行Crontab-e104***/scripts/backup_mysql.sh#每天4点10分运行脚本备份数据库还原数据库的时候只要把备份出的文件拷贝到数据库放置数据的目录下,修改权限。重启下数据库就完成了恢复了。二、使用mysqldump备份数据库mysqldump是采用SQL级别的备份机制,它将数据表导成SQL脚本文件,在不同的MySQL版本之间升级时相对比较合适,这也是最常用的备份方法。关于mysqldump的更详细解释用/MysqlDir/bin/mysqldump-help来查看详细的解释。我们使用的数据库备份完成之后有10个G如果每天都做一次全备,不方便,就一个星期做一次全备,一天做一次增量备份。为了不影响线上业务,实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在slave机器上做备份。详细的mysqlreplication请参看mysq.l主主、主从复制详解一个星期一次的全备的脚本,脚本文件放在/scripts目录下,备份时需要一些目录,注意需要手动创建。#vimysql_full_bak.sh#!/bin/bash#Thisismysqlmysqlfullbakscripts#2009-08-20#badboyuser二bakpasswd=123456databak_dir二/backup/cacti #备份的目录eMailFile=$databak_dir/email.txteMail=leezhenhual7@163.comDATE='date+%Y%m%d'logFile=$databak_dir/logs/mysql$DATE.logdatabase=cactiecho"" "">$eMailFileecho"" "">>$eMailFileecho$(date+"%y-%m-%d%H:%M:%S〃)>>$eMailFilecd/datadumpFile=$database$DATE.sqlGZDumpFile=$database$DATE.tar.gzoptions二""-u$user-p$passwd—opt—extended-insert=false—triggers二false-R—hex-blob—flush-logs—delete-master-logs-B$database""mysqldump$options>$dumpFile#导出数据文件if[[$?==0]];thentarcvzf$GZDumpFile$dumpFile>>$eMailFile2〉&1echo""BackupFileName:$GZDumpFile"">>$eMailFileecho""DataBaseBackupSuccess">>$eMailFilescp$GZDumpFileuser@”ip地址”:/Dir #传送备份文件到另一台计算机,需要做好ssh信任rm-f$dumpFile #删除备份的文件rm-rf$databak_dir/daily/*#删除每天备份的文件elseecho""DataBaseBackupFail!">>$emailFilemail-s""DataBaseBackupFail""$eMail<$eMailFile#如果备份不成功发送邮件通知fiecho"" "">>$logFilecat$eMailFile>>$logFile更多mysqldump的选项请查看mysqldump-help每天增量备份的脚本,定义为每天4点10分时运行此文件,备份上一天4点10分之后到今天4点之前的数据#vimysqldailybak.sh#!/bin/bashThisismysqlmysqldailybakscripts2009-08-20badboy/usr/bin/mysqladminflush-logs#user二bakpasswd=123456database二cactidaily_databak_dir=$databak_dir/daily#备份目录,需要创建eMailFile=$daily_databak_dir/email.txteMail=leezhenhual7@163.comDATE='date+%Y%m%d'logFile=$daily_databak_dir/mysql$DATE.logecho" ">$eMailFileecho" ">>$eMailFileecho$(date+"%y-%m-%d%H:%M:%S〃)>>$eMailFileecho" ">>$eMailFileTIME=$(date"-d10dayago"+%Y%m%d%H%M%S)StartTime=$(date"-d1dayago"+"%Y-%m-%d%H:%M:%S")echo“Delete10daysbeforethelog”>>$eMailFilemysql-u$user-p"$passwd"-e"purgemasterlogsbefore${TIME}"&&echo"delete10daysbeforelog"|tee-a$eMailFile#删除10天前的2进制文件filename二/data/'cat/data/mysql-bin.index|awk-F"/"'{print$2}'、 #2进制文件foriin$filenamedoecho"$StartTimestartbackupbinlog">>$eMailFilemysqlbinlog-u$user-p$passwd-d$batabase—start-datetime="$StartTime"$i>>$daily_databak_dir/daily$DATE|tee-a$eMailFiledoneif[$?=0]thencd$daily_databak_dirtar-zcvf$daily_databak_dir/$database$DATE.tar.gzdaily$DATE〉〉/dev/null2>&1#scp$daily_databak_dir/$database$DATE.tar.gzuser@'ip地址”:/Dir#传送备份文件到另一台计算机,需要做好ssh信任echo"dailybackupsucceed">>$eMailFileelseecho"dailybackupfail">>$eMailFilemail-s"MySQLBackup"$eMail<$eMailFile#备份失败之后发送邮件通知ficat$eMailFile>$logFile添加可执行的权限#chmod755/scripts/mysql_full_bak.sh/scripts/mysqldailybak.sh加到crontab里面让脚本自动执行,如果有专门用于备份的服务器,可以利用ssh认证、scp命令,自动发送到另一台服务器上,保证数据的安全。可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论