bitscn.com		一、mysql的逻辑备份是将数据库备份成一个文件,这样有利于查看与编辑。在mysqlk ,使用mysqldump工具来完成逻辑备份; 
      1、备份指定的库,或者此库中的表; 
            mysqldump [options]db_name [tables] 
      2、备份指定的一个库或者多个库; 
            mysqldump [options] --database db1[db2 db3......] 
      3、备份所有数据库; 
            mysqldump [options] --all-database
举例如下; 
      1、备份所有数据库: 
          mysqldump -uroot -p --all-database > all.sql 
      2、备份product数据库; 
           mysqldump -uroot -p product > product.sql 
      3、备份product数据库下的code表; 
          mysqldump -uroot -p product code > code.sql 
      4、备份product数据库下的code表和list表; 
          mysqldump -uroot -p product code list > code_list.sql 
              ......
二、完全恢复; 
      1、恢复数据库; 
         mysql -uroot -p dbname       2、重做备份日志; 
           mysqlbinlog binlog-file | mysql -u root -p 
完整举例如下; 
     1、第一天,备份数据库; 
          mysqldump -uroot -p -l -f product >product.sql 
           -l:给所有表加读锁,-f:生成一个新的日志文件。 
     2、第二天,插入一部分新数据; 
     3、第三天,数据库突然挂了,数据无法访问,需要恢复备份; 
          mysql -uroot -p product      4、恢复完成后得到的是第一天备份时的数据,此时需要使用mysqldump恢复自mysqldump备份后的binlog: 
       mysqlbinlog localhost-bin.000012 | mysql -uroot -p product
三、基于时间点还原; 
     1、如果第三天9点发生误操作,可以用如下语句从备份和binlog将数据恢复到故障前: 
        mysqlbinlog --stop-date=2010-09-17 8:59:59 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd 
     2、跳过故障点继续恢复; 
       mysqlbinlog --start-date=2010-09-17 9:01:00 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd
四、基于位置恢复; 
      和基于时间点的恢复相类似,但更精确,同一时间点可能有多条sql语句同时执行,恢复的操作步骤如下; 
     1、在shell下执行如下命令; 
         mysqlbinlog --start-date=2010-09-17 8:55:00 --stop-date=2010-09-17 9:05:00 /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql 
         此时在tmp下建立了小的文本文件,编辑它并找出错语句前后的位置号,例如前后号分别为:198765和198869; 
      2、恢复了以前的备份文件后,接着执行如下命令; 
         mysqlbinlog --stop-position=198765 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd 
       mysqlbinlog --start-position=198769 /var/log/mysql/bin.123456 | mysql -uroot -pmypwd 
第一行:恢复到停止位置的所有事务; 
第二行:将恢复从给定的起始位置直到二进制日志结束的所有事务; 
********************************************************************************************** 
物理备份和恢复; 
物理备份比逻辑备份速度更快,物理备份分为: 
    1、冷备份:停下mysql服务,cp数据,恢复时停止mysql,先进行操作系统级别恢复数据文件,然后重启mysql服务,使用mysqlbinlog工具恢复自备份以来的所有binlog. 
    2、热备份:对于不同的存储引擎方法也不同; 
    a、myisam存储引擎,本质就是将要备份的表加读锁,然后再cp数据文件到备份目录。方法如下两种; 
        方法1、使用mysqlhotcopy工具; 
                 mysqlhotcopy工具是mysql自带的热备份工具,使用方法如下; 
                  mysqlhotcopy db_name [/path/to/new_directory] 
      方法2、手工锁表copy; 
                 mysql>flush tables for read; 
                 然后cp数据文件到备份目录下; 
   b、innodb存储引擎; 
                ibbackup工具可以热备份innodb存储引擎类数据库,但有一点它是收费的,此处不研究。						bitscn.com
   
 
   