MySQL不同存储引擎的数据备份与恢复

存储 容灾备份 MySQL
数据备份的目的很直接也很简单,就是为了避免因不可预测、偶然的事件而导致的惨重损失,所以数据越重要、变化越频繁,就越要进行数据备份。

数据备份的目的很直接也很简单,就是为了避免因不可预测、偶然的事件而导致的惨重损失,所以数据越重要、变化越频繁,就越要进行数据备份。我们以MySQL为例对数据备份进行了粗略的解读,本文我们依然以MySQL为例,讲讲面对不同的存储引擎如何做数据备份与恢复。

为了应对不同的数据处理,MySQL提供了十几种不同的存储引擎,不过,我们没有必要一一去了解,因为熟悉使用MySQL的人都知道,比较常用的存储引擎有两个,分别是MyISAM和InnoDB。

  • MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎,不支持事务、也不支持外键,但其优势在于访问速度快,对事务完整性没有要求,以select,insert为主的应用基本上可以用这个引擎来创建表。常用于高读取的应用场景数据库,支持三种不同类型的存储结构:静态型、动态型、压缩型。
  • InnoDB提供了具有提交、回滚和崩溃恢复能力的事务安全,支持自动增长列,支持外键约束。对比MyISAM引擎,InnoDB写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。

 

 

了解了MySQL常用的两种存储引擎之后,我们就来看看在这两种引擎中如何进行数据备份和恢复。

MyISAM数据备份

因为MyISAM是保存成文件的形式,所以在备份时有多种方法可以使用,并且大多数虚拟主机提供商和INTERNET平台提供商只允许使用MyISAM格式,掌握MyISAM数据备份就格外重要了。

方法1:文件拷贝

为了保持数据备份的一致性,我们可以对相关表执行LOCK TABLES操作,对表执行FLUSH TABLES。当然,你只需要限制写操作,这样能够保证在复制数据时,其它操作仍然可以查询表,而FLUSH TABLES是用来确保开始备份前将所有激活的索引页写入硬盘。

标准流程:锁表、刷新表到磁盘、拷贝文件、解锁。

方法2:SQL语句备份

SELECT INTO ...OUTFILE或BACKUP TABLE都可以进行SQL级别的表备份,需要注意的是这两种方法如果有重名文件,***是先移除重名文件。另外,BACKUP TABLE备份需要注意输出目录的权限,改方法只是备份MYD和frm文件,不备份索引。

方法3: mysqlhotcopy 备份

mysqlhotcopy 是一个 Perl脚本,使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库,但其只能运行在数据库目录所在的机器上,且只用于备份MyISAM。

  1. shell> mysqlhotcopy db_name [/path/to/new_directory ] 
  2. shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory 

方法4: mysqldump 备份

Mysqldump既可以备份表结构和数据,也可以备份单个表、单个库或者所有库,输出是SQL语句文件或者是其它数据库兼容的格式。在之前的文章中,我们较详细的介绍了Mysqldump,本文就不再赘述了。

  1. shell> mysqldump [options] db_name [tables]  
  2. shell> mysqldump [options] ---database DB1 [DB2 DB3...] 
  3. shell> mysqldump [options] --all—database 

方法5:冷备份

冷备份的方法就很简单粗暴了,在MySQL服务器停止服务时,复制所有表文件。

MyISAM数据备份恢复

不同的备份方式有相应的恢复方法:

  • 如果是mysqldump备份,恢复方法是mysql –u root < 备份文件名;
  • 如果是mysqlhotcopy或文件冷/热拷贝备份,恢复方法是停止MySQL服务,并用备份文件覆盖现有文件;
  • 如果是BACKUP TABLE备份,使用restore table来恢复;
  • 如果是SELECT INTO ...OUTFILE备份,使用load data恢复数据或mysqlimport命令。

InnoDB数据备份

MyISAM不支持事务和外键,这使得MySQL使用者往往会面临一些挑战,所以,理所当然的当InnoDB支持事务和外键时,即使它的速度较慢,也还是获得了MySQL使用者的青睐。

方法1:mysqldump

是不是看着很眼熟,没错儿,上面MyISAM数据备份的方法其中之一就是它。Mysqldump也可以对InnoDB提供非物理的在线逻辑热备份,使用方法和MyISAM类似。

方法2:copy file

InnoDB底层存储的时候会将数据和元信息存在ibdata*, *.ibd, *.frm, *.ib_logfile*等文件中,所以备份了这些文件就相当于备份了InnoDB数据。

方法3:select into

与MyISAM用法一样。

方法4:商业工具

InnoDB数据备份有很多商业工具可以使用,例如InnoDB Hotbackup,这是一个在线备份工具,即可以在InnoDB数据库运行时备份InnoDB数据库; ibbackup,将线上的my.cnf所指向的的数据内容备份到my.backup.cnf指向的数据目录。

InnoDB数据备份恢复

在使用特定的恢复方法之前,InnoDB数据备份恢复还有两个通用的方法,分别是InnoDB的日志自动恢复功能,即重启mysql服务和“***大法”——重启计算机。

  • 如果是mysqldump完全备份,先恢复完全备份,然后再恢复完全备份后的增量日志备份。
  • 如果是select into备份表,则采用load data或mysqlimport恢复。
  • 如果是copy file,那么就停止MySQL服务,备份文件覆盖当前文件,并执行上次完全备份后的增量日志备份。
责任编辑:武晓燕 来源: 今日头条
相关推荐

2010-05-21 15:53:30

2011-04-11 13:46:17

Oracle数据库备份

2010-05-14 17:44:47

MySQL数据库

2010-05-21 10:58:19

MySQL存储引擎

2010-06-13 13:50:02

MySQL存储引擎

2018-04-20 08:37:23

灾难恢复数据备份

2017-07-10 14:26:03

Mysql数据备份数据恢复

2019-02-28 21:20:50

MySQL备份与恢复数据库

2011-03-25 13:43:56

CactiEZ备份

2019-01-14 14:25:25

MySQL存储逻辑架构

2018-06-14 10:44:59

MySQLMyISAMInnoDB

2010-05-21 16:10:28

2023-09-12 09:45:54

Java数据库

2016-11-18 15:42:06

存储

2016-10-19 16:50:43

大数据

2017-09-06 08:23:01

数据备份恢复过程正确姿势

2011-07-26 13:55:01

MongoDB备份与恢复

2010-03-02 09:47:03

Fedora MySQ

2010-05-26 10:25:50

MySQLdump增量

2017-03-15 15:45:33

MySQL存储引擎设计与实现
点赞
收藏

51CTO技术栈公众号