首页>>数据库>>MySQL完全备份,增量备份,恢复的操作方法
MySQL完全备份,增量备份,恢复的操作方法
来源: http://kobenini.blog.163.com/ 时间: 2015-01-27 11:45:38

在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。场景:每周日执行一次完全备份,每天下午1点执行MySQLdump增量备份  
      MySQLdump增量备份配置  
      执行增量备份的前提条件是MySQL打开log-bin日志开关,例如在my.ini或my.cnf中加入  
      log-bin=/opt/Data/MySQL-bin  
      “log-bin=”后的字符串为日志记载目录,一般建议放在不同于MySQL数据目录的磁盘上。  
      MySQLdump增量备份  
      假定星期日下午1点执行完全备份,适用于MyISAM存储引擎。  
      MySQLdump –lock-all-tables –flush-logs –master-data=2 -u root -p test > backup_sunday_1_PM.sql  
      对于InnoDB 将–lock-all-tables替换为–single-transaction
flush-logs 为结束当前日志,生成新日志文件
master-data=2 选项将会在输出SQL中记录下完全备份后新日志文件的名称,  
      用于日后恢复时参考,例如输出的备份SQL文件中含有:  
      CHANGE MASTER TO MASTER_LOG_FILE=’MySQL-bin.000002′, MASTER_LOG_POS=106;  
      MySQLdump增量备份其他说明:  
      如果MySQLdump加上–delete-master-logs 则清除以前的日志,以释放空间。但是如果服务器配置为镜像的复制主服务器,用MySQLdump –delete-master-logs删掉MySQL二进制日志很危险,因为从服务器可能还没有完全处理该二进制日志的内容。在这种情况下,使用 PURGE MASTER LOGS更为安全。  
      每日定时使用 MySQLadmin flush-logs来创建新日志,并结束前一日志写入过程。并把前一日志备份,例如上例中开始保存数据目录下的日志文件 MySQL-bin.000002 , …
MySQL设定MAX_BINLOG_SIZE 1.修改/etc/my.cnf 添加max_binlog_size=512m

根据上述分析,我们在T8项目使用MySQL增量备份,也需要三个步骤:

?  首选修改MySQL启动配置文件my.cnf,在其中的mysqld项中增加log-bin选项,重新启动MySQL服务器以开启二进制日志功能,在生成文件/usr/data/mysql/ t8server-bin.indext8server-bin..000001。如图所示:

 

 

?  编写完全备份可执行文件脚本:

 

?  编写增量备份可执行文件脚本:

 

?  执行full_backup_20100417_1_pm,生成/usr/data/mysql/full_backup_20100417_1_pm. sql文件。

?  执行inc_backup_1_pm,生成/usr/data/mysql/t8server-bin..000002

其中full_backup_20100417_1_pm. sqlt8server-bin..000002分别是完全备份和增量备份文件。

要进行备份文件的恢复,只需执行命令:

 

u  总结

MySQL提供了很方便的完全+增量备份实现方法,我们只需调用系统内置的方法或者作出一些细微的配置就可以对MySQL数据库进行备份和恢复。对于MyISAM数据库和InnoDB数据库,都可以通过mysqldump实现数据库的完全逻辑备份,通过启动二进制日志(binary logs),可以记录一个时间段内对数据库的所有可能更新的操作,从而通过flush logs创建新的日志而实现增量备份。

MySQL也提供了非常方便的恢复方法,由于mysqldump的输出结果为可执行的.sql文件,我们可以直接运行该文件实现对完全备份的恢复。然后通过mysqlbinlog命令恢复崩溃之前的二进制日志序列,就可以将数据库恢复至崩溃前的状态。

[ 从备份中恢复 ]

* 恢复完全备份

mysql -u root -p < backup_sunday_1_PM.sql

* 恢复增量备份

mysqlbinlog mysql-bin.000002 ... | mysql -u root -p

注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能。

备注:若使用mysqlbinlog mysql-bin.000002 … | mysql -u root -p 恢复数据过程中,出现失败情况,请使用mysql use database切换到制定的数据库,然后再使用mysqlbinlog导入数据

本页地址:http://www.easytd.com/shujuku/d_15012711232.html


上一篇:Oracle基于触发器实现主键ID自增长 下一篇:MySQL如何查询索引及索引定义字段?