MySQL 备份与恢复

VictorLi 发布于 2010/11/28 16:33
阅读 857
收藏 7

1.备份与恢复的类型

  • 逻辑备份与物理备份
  • 线上备份与线下备份
  • 本地备份与远程备份:mysqldump,mysqlhotcopy(第三方PERL程序),select ... into outfile
  • 快照备份(mysql自身不支持),可使用第三方工具Veritas,LVM,ZFS
  • 全备份与增量备份
  • 全恢复与时间点(point-in-time)(增量)恢复

2.数据库备份方法

     2.1 通过拷贝表文件进行备份

         如MyISAM表的三个数据文件:*.frm,*.MYD,*.MYI. 为了保证数据的完整性,需要停止服务或通过:LOCK TABLES先锁定表,再通过FLUSH TABLES 来将所有活动状态的索引页写入磁盘.

     2.2 带分隔符的文本文件备份

         i) 通过SELECT * INTO OUTFILE 'filename' FROM table_name,此方法只能在本在进行,且只包含表的数据信息,不包含结构信息.

         ii)通过mysqldump --tab,些方法可远程备份且包含表的结构信息

         采用以上两种办法备份的数据可以通过:LOAD DATE INFILE 或mysqlimport 进行恢复

    2.3 使用mysqldump or mysqlhotcopy 脚本进行备份

        i) mysqldump 作为最通用的方法,对所胡存储引擎都适用

          如:

               shell>mysqldump db_name > dump file

               shell>mysqldump --tab=/path/to/save/dir db_name

         ii)mysqlhotcopy作为第三方脚本只支持MyISAM数据库

如:

shell>mysqlhotcopy db_name /path/to/save/dir (更多参考:http://fwd4.me/q15

如果备份innodb引擎的数据库需要使用:ibbackup  

     2.4 使用Binary Log来实现增量备份

MySQL支持增量备份,但必须开启--log-bin选项来记录二进制日志.以下是使用Binary log进行恢复的相关步骤:

         i) mysql> show binary logs; 来查看一共有多少条二进制日志记录

         ii) mysql>show master status; 来查看当前正在使用的日志文件是哪一个,可以通过FLUSH LOGS来开启新的日志

         iii) 通过 shell>mysqlbinlog binlog_file.00001 binlog_file.00002 ... | mysql -u root -p 来恢复某一或多个阶段的数据

      如果想查看log中的数据可以使用

        iiii) shell>mysqlbinlog binlog_files | more 或通过

             shell>mysqlbinlog binlog_files > tmpfile 导出成可读数据进行查看,当然此时可以通过

             shell>mysql -uroot -p <tmpfile 来导入数据

      如果同时有多个日志文件需要导出,且希望导出到一个文件内,可以采用>>进行增量导出,如

            shell>mysqlbinlog binlog_file.000001 > /tmp/backup.sql

            shell>mysqlbinlog binlog_file.000002 >> /tmp/backup.sql

      同时通过

           shell>mysql -uroot -p -e "source /tmp/backup.sql"  进行导入.

 

待续......

加载中
0
Midnight
Midnight

这样备份确定不会丢失数据吗?

0
VictorLi
VictorLi

引用来自#2楼“杨云洲”的帖子

这样备份确定不会丢失数据吗?

在不出现操作失误的前提下,应该是没有问题的!

0
z
zhanghy

在数据库中同时存在MYSAM与INNDOB引擎的表时,mysqldump备份显然有点力不从心,各位工作中是如何解决,对于大数库的备份又是如何解决!

返回顶部
顶部