当前位置: 首页 > 科技观察

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

时间:2023-03-13 06:33:27 科技观察

不同MySQL存储引擎的数据备份与恢复进行数据备份。我们以MySQL为例,对数据备份做一个粗略的解读。在这篇文章中,我们仍然以MySQL为例,来谈谈面对不同的存储引擎,如何做数据的备份和恢复。为了应对不同的数据处理,MySQL提供了十几种不同的存储引擎,但是我们不需要一一了解,因为熟悉使用MySQL的人都知道常用的存储引擎有两种,即MyISAM和InnoDB。MyISAM是MySQL的ISAM扩展格式,也是默认的数据库引擎。不支持事务,不支持外键,但优点是访问速度快,对事务完整性没有要求。基本上,基于选择和插入的应用程序都可以使用该引擎来创建表。常用于高读应用场景数据库,支持静态、动态、压缩三种不同类型的存储结构。InnoDB通过提交、回滚和崩溃恢复功能提供事务安全,支持自动增长列,并支持外键约束。与MyISAM引擎相比,InnoDB的写处理效率会更低,而且会占用更多的磁盘空间来保留数据和索引。了解了MySQL常用的两种存储引擎之后,我们再来看看如何在这两种引擎中进行数据的备份和恢复。MyISAM数据备份由于MyISAM是以文件形式保存的,备份时有多种使用方式,而大多数虚拟主机提供商和互联网平台提供商只允许使用MyISAM格式,因此掌握MyISAM数据非常重要备份。方式一:文件复制为了保持数据备份的一致性,我们可以对相关表进行LOCKTABLES操作,对表进行FLUSHTABLES操作。当然,你只需要限制写操作,让其他操作在复制数据时仍然可以查询表,FLUSHTABLES用于确保在开始备份之前所有活动索引页都写入硬盘。标准流程:锁表、刷新表到磁盘、复制文件、解锁。方法二:SQL语句备份SELECTINTO...OUTFILE或BACKUPTABLE可以进行SQL级别的表备份。需要注意的是,如果这两种方法中存在同名文件,最好先把同名文件去掉。另外BACKUPTABLE备份需要注意输出目录的权限。修改后的方法只备份MYD和frm文件,不备份索引。方法三:mysqlhotcopy备份mysqlhotcopy是一个Perl脚本,使用LOCKTABLES、FLUSHTABLES和cp或scp快速备份数据库,但只能运行在数据库目录所在的机器上,仅用于备份上MyISAM。shell>mysqlhotcopydb_name[/path/to/new_directory]shell>mysqlhotcopydb_name_1...db_name_n/path/to/new_directory方法四:mysqldump备份mysqldump可以备份表结构和数据,也可以备份单表、单库或所有libraries,输出是一个SQL语句文件或其他数据库兼容的格式。在上一篇文章中,我们比较详细地介绍了Mysqldump,本文不再赘述。shell>mysqldump[options]db_name[tables]shell>mysqldump[options]---databaseDB1[DB2DB3...]shell>mysqldump[options]--all—数据库方法五:冷备份冷备份方法很简单粗暴是的,在MySQL服务器关闭时复制所有表文件。MyISAM数据备份恢复不同的备份方式有对应的恢复方式:如果是mysqldump备份,恢复方式为mysql–uroot<备份文件名;如果是mysqlhotcopy或者文件冷/热拷贝备份,恢复方法是停止MySQL服务,使用备份文件覆盖已有文件;如果是BACKUPTABLE备份,使用restoretable来恢复;如果是SELECTINTO...OUTFILE备份,使用loaddata恢复数据或者mysqlimport命令。InnoDB数据备份MyISAM不支持事务和外键,这使得MySQL用户经常面临一些挑战,所以,当然,当InnoDB支持事务和外键时,即使速度较慢,它仍然赢得了MySQL用户的青睐。方法一:mysqldump是不是似曾相识?是的,就是上面的MyISAM数据备份方法之一。Mysqldump也可以为InnoDB提供非物理的在线逻辑热备份,类似于MyISAM。方式二:复制文件InnoDB在底层存储时,会将数据和元数据存储在ibdata*、*.ibd、*.frm、*.ib_logfile*等文件中,所以备份这些文件就相当于备份了InnoDB数据。方法三:selectinto同MyISAM。方法四:商业工具InnoDB数据备份的商业工具有很多,比如InnoDBHotbackup,它是一个在线备份工具,可以在InnoDB数据库运行的时候备份InnoDB数据库;ibbackup,指向线上my.cnf的数据内容备份到my.backup.cnf指向的数据目录。在使用具体的InnoDB数据备份恢复方法之前,InnoDB数据备份恢复常用的方法有两种,一种是InnoDB的日志自动恢复功能,即重启mysql服务,另一种是“绝招”——重启电脑。如果是mysqldump的全量备份,先恢复全量备份,全量备份后再恢复增量日志备份。如果是selectintobackuptable,使用loaddata或者mysqlimport恢复。如果是复制文件,则停止MySQL服务,备份文件覆盖当前文件,并在上次全量备份后进行增量日志备份。