mysql myisam 备份_mysql之MyISAM和InnoDB的备份及恢复策略

mysql之MyISAM和InnoDB的备份及恢复策略

MyISAM/InnoDB 备份策略

因为在一个数据库中有可能要同时使用MyISAM和InnoDB两种引擎,因此统一考虑他们的备份/恢复策略。

1、 完整备份采用mysqldump。

2、 增量备份采用bin-log日志。

先执行FLUSH LOGS刷新日志,同步日志缓存到磁盘,关闭当前的日志并产生新的日志文件。

然后拷贝上一次完整备份到一个安全的地方。

注意:对于 Innodb 类型表来说,还需要备份其日志文件,即 ib_logfile* 文件。因为当 Innodb 表损坏时,就可以依靠这些日志文件来恢复。

3、 单表备份采用select into。

InnoDB 表恢复方法

1、 先尝试使用InnoDB的日志自动恢复功能,方法是重启mysql服务。

2、 在一些情况下,明显地数据库损坏是因为操作系统损坏它自己的文件缓存,磁盘上的数据可能完好,最好是首先重启计算机。它可以消除那些显得是数据库页损坏的错误。

如果不行,则采用下面的方法进行恢复。

3、 如果是mysqldump做的完全备份,先恢复完全备份,然后再恢复完全备份后的增量日志备份。

4、 如果是采用select into备份表的话,则采用load data或mysqlimport恢复。

5、 如果是采用二进制冷备份做的完全备份,则先停止mysql服务,覆盖备份的二进制文件,然后执行上次完全备份后的增量日志备份。

6、 注意:InnoDB二进制文件没有MyISAM那么好,必须在相同的浮点数的cpu机器上移植。

MyISAM 表恢复

1、 如果是通过mysqldump备份的,就执行:mysql –u root < 备份文件名。

2、 如果通过mysqlhotcopy或文件冷/热拷贝来备份的,停止mysql服务,使用备份文件来覆盖现有文件。

3、 如果是采用BACKUP TABLE备份的,使用restore table来恢复。因为backup table不会备份索引文件,恢复表注意重建索引。

4、 如果是采用SELECT INTO ...OUTFILE备份的,使用load data恢复数据,也可以使用mysqlimport命令来代替。

使用日志恢复

可以通过mysqlbinlog工具可以恢复二进制日志,可以一次恢复多个日志文件,命令如下:

shell> mysqlbinlog [options] hostname-bin.[0-9]* | mysql

mysqlbinlog命令使用方法见相关文章。

备份策略注意点:

1、一定用--log-bin或甚至--log-bin=log_name选项运行MySQL服务器,其中日志文件名位于某个安全媒介上,不同于数据目录所在驱动器。

如果你有这样的安全媒介,最好进行硬盘负载均衡(这样能够提高性能)。

2、定期进行完全备份,使用mysqldump命令进行在线非块备份。

在负载比较低的时候进行,并且建议采用--single-transaction参数来保证事务数据的一致性,同时不影响其他用户的正常读写。

3、完整备份时采用FLUSH LOGS,便于产生增量备份日志。

4、用FLUSH LOGS或mysqladmin flush-logs 刷新日志进行定期增量备份。

5、定期维护表,这样既可以提高性能,并且可以减少数据丢失和出错的可能性。

6、关键表可以另外再做备份,根据需要。

MYSQL备份恢复》之 InnodbMyISAM引擎 一、系统环境 1.1 ubuntu 12.0.4 X86_64 1.2 percona-xtrabackup-2.0.3.tar.gz 1.3 xtrabackup简介 xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。 xtrabackup有两个主要的工具:xtrabackup、innobackupex (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能同时备份处理innodbmyisam,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项,如slave-info可以记录备份恢复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。 (3)使用帮助:http://www.percona.com/docs/wiki/percona-xtrabackup:start  (4)Xtrabackup可以做什么   在线(热)备份整个库的InnoDB、 XtraDB表   在xtrabackup的上一次整库备份基础上做增量备份(innodb only)   以流的形式产生备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)   MySQL数据库本身提供的工具并不支持真正的增量备份,二进制日志恢复是point-in-time(时间点)的恢复而不是增量备份。Xtrabackup工具支持对InnoDB存储引擎的增量备份,工作原理如下: xtrabackup备份原理   xtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致。   InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况。当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作:   xtraBackup在备份的时候, 一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着transactions log,一旦log发生变化,就把变化过的log pages复制走。为什么要急着复制走呢? 因为transactions log文件大小有限,写满之后,就会从头再开始写,所以新数据可能会覆盖到旧的数据。   在prepare过程中,XtraBackup使用复制到的transactions log对备份出来的innodb data file进行crash recovery。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值