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

如何备份和恢复MySQL数据库

时间:2023-03-16 10:07:26 科技观察

MySQL的备份和恢复越来越高了,数据库在信息系统中扮演着非常重要的角色。尤其是一些对数据可靠性要求高的行业,如果发生数据丢失,损失会非常严重。因此,我们绝对有必要为数据库指定一个详细的数据库备份和灾难恢复策略。文档概要:1.数据库备份的一些概念1.数据丢失的原因程序错误、人为错误、操作错误、磁盘故障、灾难(火灾、地震)和盗窃等2.数据备份的类型1)从物理和逻辑角度分类物理备份可分为:冷备份(离线备份):在数据库关闭时进行备份操作热备份(在线备份):在数据库运行时进行备份操作,这种备份方式依赖于数据库日志温文件备份:备份操作在数据库锁定表(不可写但可读)时执行。所谓物理备份就是对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。这种类型的备份非常适合在出现问题时需要快速恢复的大型关键数据库。逻辑备份是数据库逻辑组件(如表和其他数据库对象)的备份。这种类型的备份用于编辑数据值或表结构的小数据量,或在不同的机器架构上重新创建数据。2)从数据库备份策略来看,备份策略可以分为:全量备份:每次对数据进行完整备份,即备份整个数据库、数据库结构和文件结构,并节省备份时的时间完成数据库是差异备份和增量备份的基础。全量备份的备份和恢复操作非常简单方便,但是数据重复很多,会占用很多磁盘空间,备份时间也很长。差异备份:备份自上次完全备份以来修改过的所有文件。备份时间节点是从上次全量备份开始的,备份数据量会越来越大。恢复数据时,只需要恢复上一次的全量备份和最近一次的差异备份。增量备份:只备份自上次完全备份或增量备份后修改过的文件。以上次全量备份或上次增量备份时间为时间点,只备份其间的数据变化,因此备份的数据量小,占用空间小,备份速度快.但是在恢复的时候,需要把上次全量备份到上次增量备份的所有增量备份都恢复。如果中间的备份数据损坏,数据就会丢失。如图:三、常用的备份方式1)需要在数据库关闭时进行物理冷备份,这样可以更好的保证数据库的完整性。一般用于非核心业务,这种业务一般允许终端。物理冷备份的特点是速度快,恢复操作简单。通常通过直接打包数据库文件夹来实现(如:/usr/local/mysql/data)2)专用备份工具mysqldump或mysqlhotcopymysqldump是客户端常用的逻辑备份程序,可以生成一组对象执行以重现原始数据库对象定义和表数据的SQL语句。它可以将一个数据库转储到多个MySQL数据库,备份它们或将它们传输到远程SQL服务器。Mysqldump更通用,因为它可以备份各种表。Mysqlhotcopy是最初由TimBunce编写和贡献的Perl脚本。Mysqlhotcopy仅用于备份MyISAM和ARCHIVE表。只能在UNIX或者linux上运行,因为使用范围很小,这里就不赘述了。3)启用二进制日志增量备份MySQL支持增量备份,增量备份必须启用二进制日志。二进制日志文件为用户提供恢复执行备份点后所做的数据库更改所需的信息。如果进行增量备份,则需要刷新二进制日志。4)通过第三方工具备份PerconaXtraBackup是一款免费的MySQL热备份软件,支持Innodb和XtraDB在线热备份,也支持MySQL表备份,但是MyISAM表的备份必须在表锁的情况下进行。由于内容太多,这里就不一一详解了。有兴趣的可以参考软件的详细介绍了解一下。二、MySQL的全量备份与恢复1.物理冷备份与恢复物理冷备份一般采用tar命令直接打包数据库文件夹,备份前需要关闭mysql服务。1)备份数据库创建/backup目录作为备份数据存放路径,使用tar创建备份文件。整个数据库文件夹备份是完整备份。如下图所示:2)恢复数据库模拟故障,将/usr/local/mysql/data移动到/bak目录下。如下图所示:从备份文件中恢复数据。如下图所示:2.mysqldump备份与恢复通过mysqldump命令,可以将指定的库、表或所有库导出为SQL脚本,方便该命令在不同版本的MySQL服务器上使用。例如,当需要升级MySQL服务器时,可以先使用mysqldump命令导出原来的数据库信息,然后直接导入到升级后的MySQL服务器中。1)备份数据库使用mysqldump命令导出数据时,默认直接在终端显示。如果要保存到文件中,需要结合shell的“>”重定向输出操作。命令格式如下:常用选项:-u:指定用户名;-p:指定密码例:将mysql库中的user表导出为mysql-user.sql,将整个auth库导出为auth。该库导出为all-data.sql文件。如下图所示:2)查看备份文件。mysqldump工具导出的SQL脚本是一个文本文件,其中“/*...*/”部分或者以“--”开头的行为注释信息使用grep、less、cat等文本工具可以查看脚本内容。如下图所示(见auth.sql文件中的内容):3)恢复数据库,使用mysqldump命令导出的SQL备份脚本,恢复时通过mysql命令导入。命令格式为:“mysql[选项][库名][表名]