备份咋恢复(备份恢复的数据在哪)

lxf2023-12-18 11:40:01

RDS使用mysqldump进行MySQL数据库的逻辑完整备份,使用Xtrabackup进行物理完整备份,这是一种实例级备份。

用户可以通过登录RDS控制台下载备份文件。按照使用逻辑备份文件恢复到自建数据库-MySQL,使用物理备份文件恢复到自建数据库-MySQL的操作步骤,即可恢复数据。

本文主要从原理的角度介绍MySQL数据库的备份和恢复,希望让用户对RDS的备份和恢复机制有更多的了解。

一、备份类型介绍

1。根据备份操作模式:物理备份和逻辑备份。

备份模式

优势

劣势

逻辑备份

1.逻辑备份是一个普通的文件,可以被编译器或者grep、sed之类的命令查看和操作;2.恢复简单且非常灵活;3.与存储引擎无关。物理备份

1.基于文件的物理备份,只需要将所需文件复制到其他地方即可完成备份;2.回收更简单;3.快速恢复,因为MySQL服务器不需要执行任何SQL或者建立索引。
1.恢复时,mysql需要加载和解释语句,转换成存储格式,重建索引,所以会比较慢;2.不保证导出后会恢复相同的数据。浮点数、软件错误等。会产生问题;3.逻辑备份必须由数据库服务器生成,因此需要更多的CPU周期。
1.InnoDB的原始文件通常比对应的逻辑备份大很多;2.物理备份并不总是能够跨平台、操作系统和MySQL版本。文件名区分大小写,浮点格式可能会遇到问题。

2.根据是否备份所有数据:完全备份和增量备份。

完全备份:备份所有需要备份的数据。

增量备份:仅备份自上次完全备份或增量备份以来发生更改的数据。

其次,使用Mysqldump进行逻辑备份恢复

1。备份数据库

Mysqldump作为一个重要的MySQL备份工具,功能相当强大。需要仔细研究备份参数和恢复策略。

(1)基本语法

备份单个数据库或单个数据库中的指定表:

mysqldump[选项]数据库[tb1] [tb2]…

备份多个数据库:

mysqldump[选项]–数据库[选项] DB1 [DB2 DB3...]

备份所有数据库:

mysqldump[选项]–所有数据库[选项]

(2)选项[选项]描述

–默认字符集=字符集

指定导出数据时要使用的字符集。如果数据表不使用默认的latin1字符集,则导出时必须指定该选项,否则数据再次导入后会出现乱码

–锁定所有表格,-x

在开始导出之前,提交一个请求来锁定所有数据库中的所有表,以确保数据的一致性。这是一个全局读锁,并且–- single-transaction和–- lock-tables选项会自动关闭。

–锁表

类似于–lock-all-tables,只是当前导出的数据表被锁定,而不是–lock-all-tables在库下。该选项仅适用于MyISAM表,如果是Innodb表,则可以使用–- single-transaction选项。

–无创建信息,-t

仅导出数据,不添加CREATE TABLE语句。

–无数据,-d

仅导出数据库表结构,不导出任何数据。

–opt

这只是一个快捷选项,相当于同时增加了–添加-删除-表–添加-锁定–创建-选项–禁用-键–扩展-插入-锁定-表–快速-设置-字符集选项。这个选项允许mysqldump快速导出数据,导出的数据可以快速导入回来。默认情况下,此选项是打开的,但可以使用–- skip-opt禁用。请注意,如果运行mysqldump时没有指定–- quick或–- opt选项,整个结果集将被放入内存中。如果导出大型数据库,可能会出现问题。

-快-问

此选项在导出大型表格时很有用。它强制mysqldump直接从服务器查询中获取记录,而不是将所有记录缓存在内存中。

–例程,-R

导出存储过程和自定义函数。

–单一交易

此选项在导出数据之前提交BEGIN SQL语句。Begin不会阻塞任何应用程序,并确保导出时数据库的状态一致。它只适用于事务表,如InnoDB和BDB。

此选项和–lock-tables选项是互斥的,因为–lock-tables将隐式提交任何挂起的事务。
如果您想导出一个大的表格,您应该结合使用–- quick选项。

–触发器

同时,导出触发器。默认情况下,此选项处于启用状态,并且通过––skip-triggers禁用。

2。还原数据库

RDS实现了实例级的逻辑备份,可以发现提取的sql文件都是实例中的数据库。然后执行数据库的导入操作:

MySQL-hhostname-uusername-PP password databasename < backup file . SQL

第三,使用Xtrabackup进行物理备份恢复

Xtrabackup是percona提供的mysql数据库备份工具。根据官方介绍,它也是世界上唯一可以对innodb和xtradb数据库进行热备份的开源工具。特点:

(1)备份过程快速可靠;

(2)备份过程不会中断正在进行的事务;

(3)可以基于压缩等功能节省磁盘空空间和流量;

(4)自动备份检查;

(5)还原速度快;

Xtrabackup主要包括两个工具:

Xtrabackup:是一个对innodb,xtradb表中的数据进行热备份的工具。它不能备份其他类型的表或数据表结构。

Innobackupex:封装xtrabackup的perl脚本,可以备份和恢复MyISAM表和数据表结构。

1.innobackupex工作原理

官方文件:http://www . per ConA . com/doc/per ConA-xtrababackup/2.1/innobupex/how _ innobupex _ works.html。

备份

如果在程序启动阶段没有指定模式,默认情况下,innobackupex将以备份模式启动。

默认情况下,该脚本使用–suspend-at-end选项启动xtrabackup,然后xtrabackup程序开始复制InnoDB数据文件。xtrabackup程序完成后,innobackupex会发现xtrabackup已经创建了xtrabackupsuspended2文件,然后执行带读锁的FLUSH TABLES,这样就给所有数据库表添加了读锁,然后开始复制其他类型的文件。

如果未指定–- IB backup,innobackupex将尝试确定自己使用的xtrabackup的二进制文件。确定二进制的逻辑是这样的:首先判断备份目录中是否存在xtrabackup_binary文件,如果存在,这个脚本会根据这个文件确定要使用的xtrabackup二进制。否则,脚本将尝试连接到数据库服务器,并通过服务器版本确定二进制。如果无法建立连接,xtrabackup将会失败,您需要自己指定二进制文件。

确定二进制后,将检查是否可以建立到数据库服务器的连接。其执行逻辑是:建立连接、执行查询、关闭连接。如果一切顺利,xtrabackup将作为一个子进程启动。

使用读锁刷新表用于备份MyISAM和其他非InnoDB表。该语句在xtrabackup备份了InnoDB数据和日志文件后执行。之后,文件的类型。frm,。mrg,。myd,。myi,。trg,。trn,。手臂,。arz,。csm,。csv,。标准杆,还有。将备份opt。

当上述所有文件备份完毕后,innobackupex脚本将恢复xtrabackup的执行,等待它备份上述逻辑执行过程中生成的事务日志文件。接下来,解锁该表,启动slave并关闭与服务器的连接。接下来,该脚本将删除xtrabackupsuspended2文件,并允许xtrabackup进程退出。

还原

为了恢复备份,需要使用–- copy-back选项启动innobackupex。

Innobackupex会先通过my.cnf文件读取以下变量:datadir、innodb _ data _ home _ dir、innodb _ data _ file _ path、innodb _ log _ group _ home _ dir,并确保这些目录存在。

接下来,这个脚本将首先复制MyISAM表、索引文件和其他类型的文件(比如:。frm,。mrg,。myd,。myi,。trg,。trn,。手臂,。arz,。csm,。csv,par和。optfiles),然后复制InnoDB表数据文件,最后。执行复制时,文件属性将被保留。在使用备份文件启动mysql之前,可能需要更改文件的所有者(例如,从复制文件的用户更改为MySQL用户)。

2。使用innobackupex来备份数据库

(1)完整备份:

innobackupex–user = root-p/home/backup/

备份后的文件:在备份的同时,备份数据会在备份目录下创建一个以当前日期和时间命名的目录来存储备份文件。

每个文件的描述:

(1)backup-my . CNF-用于备份命令的配置选项信息;

(2)IB data-表间备份文件空;

(3)xtrabackup _ binary——备份时使用的xtra backup的可执行文件;

(4)xtra backup _ bin log _ info-MySQL服务器当前正在使用的二进制日志文件以及到备份时刻为止的二进制日志事件的位置;

(5)xtra backup _ check points-备份类型(如完整或增量)、备份状态(如是否已经处于准备状态)和LSN(日志序列号)范围信息;

(6)xtra backup _ log file-备份重做日志文件。

使用innobackupex进行备份时,您还可以使用–no-timestamp选项来防止该命令自动创建按时间命名的目录;这样,innobackupex命令将创建一个BACKUP-DIR目录来存储备份数据。

(2)准备完整备份

通常,备份完成后,数据不能用于恢复操作,因为备份的数据可能包含未提交的事务或已提交但未同步到数据文件的事务。因此,此时,数据文件仍然处理不一致的状态。“准备”的主要作用是通过回滚未提交的事务,将已提交的事务同步到数据文件,使数据文件处于一致状态。

innobakupex命令的–- apply-log选项可用于实现上述功能。

innobackupex–apply-log/home/backup/2014-05-03 _ 17-21-11/

成功执行,如下所示:

在“准备”的过程中,innobackupex通常可以使用–- use-memory选项来指定它可以使用的内存大小,默认通常是100M m,如果有足够的可用内存,可以为prepare的进程划分更多的内存,以提高其完成速度。

3。还原数据库

(1)模拟数据库损坏

直接使用删除数据目录文件来模拟损坏:

(2)恢复完整备份:

innobackupex命令的–- copy-back选项用于执行恢复操作,该操作通过将所有与数据相关的文件复制到mysql服务器的DATADIR目录中来执行恢复过程。Innobackupex通过backup-my.cnf获取关于DATADIR目录的信息

innobackupex–copy-back/home/backup/2014-05-03 _ 17-21-11/

如果执行正确,其输出信息的最后几行通常如下:

(3)修改恢复的数据目录权限:

(4)启动MySQL

/bin/sh/usr/bin/mysqld _ safe–defaults-file =/etc/my . CNF &

(5)连接数据库并验证恢复的数据

adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!