1026备份和还原简单思路

-- 转自博客http://blog.csdn.net/abaowu/article/details/611386

--整个思维正向和逆向

-- 备份思路

-- 全备份 mysqldump > 文件路径
-- 增量备份 利用linux拷贝mysqlbin-log文件,拷贝那些新的文件即可,后面用来执行即可还原操作

-- 恢复思路

同理可以使用全备份和增量备份进行恢复
mysql -u root -p < C:\backup.sql-- 全量备份

-- 管道命令 传递给mysql里面
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 5.6\Data\mysql-bin.000053" | mysql -uroot -p111111 back_db;-- 增量备份
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 5.6\Data\mysql-bin.000054" | mysql -uroot -p111111 back_db;-- 增量备份
mysqlbinlog "C:\ProgramData\MySQL\MySQL Server 5.6\Data\mysql-bin.000055" | mysql -uroot -p111111 back_db;-- 增量备份

适合对象

  本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.
  
  本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.
  
  每个人的备份策略都可能不同,所以请根据实际情况修改,做到举一反三,不要照搬照抄,可能会造成不必要的损失.
  
  希望你明白这个脚本要干什么工作!
  
  
脚本描述

  每7天备份一次所有数据,每天备份binlog,也就是增量备份.
  
  (如果数据少,每天备份一次完整数据即可,可能没必要做增量备份)
  
  作者对shell脚本不太熟悉,所以很多地方写的很笨 :)
  

开启 bin log

  在mysql 4.1版本中,默认只有错误日志,没有其他日志.可以通过修改配置打开bin log.方法很多,其中一个是在/etc/my.cnf中的mysqld部分加入:
  
  [mysqld]
  log-bin
  
  这个日志的主要作用是增量备份或者复制(可能还有其他用途).
  
  如果想增量备份,必须打开这个日志.
  
  对于数据库操作频繁的mysql,这个日志会变得很大,而且可能会有多个.
  
  在数据库中flush-logs,或者使用mysqladmin,mysqldump调用flush-logs后并且使用参数delete-master-logs,这些日志文件会消失,并产生新的日志文件(开始是空的).
  
  所以如果从来不备份,开启日志可能没有必要.
  
  完整备份的同时可以调用flush-logs,增量备份之前flush-logs,以便备份最新的数据.
  
  
完整备份脚本
  
  如果数据库数据比较多,我们一般是几天或者一周备份一次数据,以免影响应用运行,如果数据量比较小,那么一天备份一次也无所谓了.
  
  下载假设我们的数据量比较大,备份脚本如下:(参考过网络上一个mysql备份脚本,致谢 :))

  
  #!/bin/sh
  
  # mysql data backup script
  # by scud http://www.jscud.com
  # 2005-10-30
  #  
  # 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会自动把内存中的日志放到文件里,然后生成一个新的日志文件,所以我们只需要备份前面的几个即可,也就是不备份最后一个.
  因为从上次备份到本次备份也可能会有多个日志文件生成,所以要检测文件,如果已经备份过,就不用备份了.
  
  注:同样,用户也需要自己远程传送,不过不需要删除了,完整备份后程序会自动生成.
  
访问设置

  脚本写完了,为了能让脚本运行,还需要设置对应的用户名和密码,mysqladmin和mysqldump都是需要用户名和密码的,当然可以写在脚本中,但是修改起来不太方便,假设我们用系统的root用户来运行此脚本,那么我们需要在/root(也就是root用户的home目录)创建一个.my.cnf文件,内容如下

  
  [mysqladmin]
  password =password
  user= root
  [mysqldump]
  user=root
  password=password  

注:设置本文件只有root可读.(chmod 600 .my.cnf )
  
  此文件说明程序使用mysql的root用户备份数据,密码是对应的设置.这样就不需要在脚本里写用户名和密码了.
  

自动运行
  
  为了让备份程序自动运行,我们需要把它加入crontab.
  
  有2种方法,一种是把脚本根据自己的选择放入到/etc/cron.daily,/etc/cron.weekly这么目录里.
  一种是使用crontab -e放入到root用户的计划任务里,例如完整备份每周日凌晨3点运行,日常备份每周一-周六凌晨3点运行.
  
  具体使用,请参考crontab的帮助.

时间: 2024-10-13 10:28:42

1026备份和还原简单思路的相关文章

win2008系统:iis配置备份和还原简单操作

(2013-09-26 16:33:22) 转载▼   分类: 开发类 当我们电脑系统有大量的站点和虚拟目录的时候,电脑因为种种原因需要重做系统,那么重装系统后这些站点我们是否只能一个一个的添加,如果有成百上千个站点呢,任务量可想而知,本文将介绍如何备份和还原win7系统IIS下的站点,重装系统后配置IIS站点将是一件非常轻松的事.笔记本电脑用的WIn7,从买电脑到现在用了有一年多了,一年下来装的软件又多又杂,而且很多软件都被病毒吞噬过,严重的影响开机速度和使用,现在准备重装系统,还我一个清爽的

SharePoint 2010 网站备份还原简单介绍

今天尝试了SharePoint2010网站的备份和还原,从网上搜一些文档看看,然后自己试试,感觉和2007的操作没什么太大的区别,跟大家分享下自己尝试的命令行方式和数据库的方式,2007自己常用的也是这两种方式. 1. 命令行的方式 在服务器端,所有程序 - Microsoft SharePoint 2010 Products - SharePoint 2010 Management Shell 确定 备份网站命令:backup-SPSite http://localhost:10086 -Pa

sql server 备份与恢复系列三 简单恢复模式下的备份与还原

原文:sql server 备份与恢复系列三 简单恢复模式下的备份与还原 一.概述 前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原.在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重要,一般不建议使用这种模式. 例如对一个数据库有5次完整数据备份,时间是t5,  之后发生灾难,就会部丢失. 当数据库越来越大,完整备份时间会越来越长,为了减少丢失风险,引入差异备份.例如下图演示:在第一次建立数据库完整备份后

(2.6)备份与还原--在简单恢复模式下事务日志的角色

简介 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性.并不承担具体的恢复数据的角色.正如"简单"这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在开始文章之前,首先要了解SQL Server提供的几种不同备份类型. SQL Server提供的几种备份类型 SQL Server所提供的几种备份类型基本可以分为以下三种(文件和文件组备份以及部分备份不在本文讨论之列): 1.完整(Full)备份:直接将所备份的数据的所有区(Extent)

windows server 2012R2数据库的备份与还原

windows server 2012R2数据库的备份与还原 实验模拟:北京有一个uec.com 的主服务器,需要在上海创建一个额外域控制器,但上海与北京网络延迟较大,正常复制不成功. 思路:在北京创建一个AD数据库的介质文件,存放AD数据库内的数据,将此介质文件复制到上海的服务器上,在上海利用 介质问价创建额外域控制器. 准备环境: 北京: server 01       IP: 192.168.1.101 上海: server 02       IP: 192.168.1.102 步骤一:在

mysql备份和还原

MySQL 数据备份与还原 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句.然后,将表中的所有记录转换成一条INSERT语句.然后通过这些语句,就能够创建表并插入数据. 1.备份一个数据库 mysqldump基本语法: mysqldump -u username -p dbname

centos备份与还原

dump备份restore还原dd数据备份tar备份scpmkisofs镜像文件制作 dump备份 1.dump主要用于备份整个文件系统备份,虽然也可以备份单一目录,但是对目录文件支持不足,单一目录还是需要使用打包压缩的方式进行备份.  dump是功能上制定等级,也就是可以进行增量备份 dump等级分为0-9,10个等级,0为完全备份,1是在0的基础上惊醒增量备份,一次类推. 当待备份的数据为单一文件系统 可以利用了level 0~9进行备份,同时可以使用dump完整功能 当待备份的数据只是目录

【RMAN】利用备份片还原数据库(中)

[RMAN]利用备份片还原数据库 [RMAN]利用备份片还原数据库(上): http://blog.itpub.net/26736162/viewspace-1621581/ 在上一篇blog中我们介绍了采用dbms_backup_restore来找回控制文件并恢复整个数据库的方法,本篇blog我们介绍采用创建临时库来找回控制文件的方法. 1.1.1  方法二:尝试采用创建临时库来找回控制文件 由于RMAN必须工作在MOUNT模式,所有的数据文件都丢失,无法通过只重建控制文件将其启动到MOUNT

第三章 数据库备份和还原

一.数据库恢复模式 1.完整:能够让数据库恢复到出现故障的时间点和指定时间点(主要是日志文件完 整备份) 2.大容量日志:数据库日志不记录对数据修改的时间(即指定的时间点)效率高只 能通过日志恢复到故障点 3.简单:对事务日志不活跃的逻辑日志文件覆盖重复利用(日志写满后覆盖完成的 提交的事务日志)不能利用日志还原数据库,只能利用完整数据库文件恢 复 1)简单恢复模式 数据库备份和还原策略 数据小 数据变化不大 数据库不能恢复到出现故障的时间点(重复擦写日志文件) 完整数据库备份  完整的数据库备