首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 高频面试题解析 第08期:物理备份和逻辑备份的区别

而使用 mysqldump 备份出的文件要进行恢复,实际就是执行 SQL 文件的过程,这里就不展开讲解了。...2 Xtrabackup 备份恢复原理 再来看看 xtrabackup 的备份原理: 开启 redo log 拷贝线程,最新的检查点开始顺序拷贝 redo log; 拷贝事务引擎的数据文件; 等到事务引擎数据文件拷贝结束...而 InnoDBidb 文件拷贝是在 FTWRL 前做的,拷贝出来的不同idb 文件最后更新时间点很可能不一样,但是 InnoDB 的 redo log 是备份开始一直持续拷贝的,拷贝一直持续到...而 xtrabackup 备份时,是拷贝的物理文件恢复时直接复制物理文件。 因此 xtrabackup 备份恢复的时间要比 mysqldump 短很多。...3.3 适用场景 正是因为 mysqldump 备份时产生结构和数据的 SQL 语句,因此其适用于数据量较少、跨版本数据库备份恢复、单库单备份等场景。

93640
您找到你想要的搜索结果了吗?
是的
没有找到

关于MySQL数据库的备份方案

备份命令 myisam引擎企业生产备份命令(适合所有引擎混合引擎): mysqldump -uroot -p123456 -A -B -F -R --master-data=2 -x --events...因为备份方便,简单灵活,易操作 当数据库特别的时候,比如30G以上时,备份MySQL数据时,也就建议不要采用mysqldump了,因为备份的时间以及恢复数据库的时间太长了,会对库造成锁,对线上的业务影响还是比较大的...innobackupex脚本用来备份非 InnoDB ,同时会调用 xtrabackup命令来备份 InnoDB ,innobackupex的基本流程如下: 1.开启redo日志拷贝线程,最新的检查点开始顺序拷贝...redo日志; 2.开启idb文件拷贝线程,拷贝innodb的数据 3.idb文件拷贝结束,通知调用FTWRL,获取一致性位点 4.备份非innodb(系统)和frm文件 5.由于此时没有新事务提交...,等待redo日志拷贝完成 6.最新的redo日志拷贝完成后,相当于此时的innodb和非innodb数据都是最新的 7.获取binlog位点,此时数据库的状态是一致的。

3.1K20

技术分享 | 只有.frm和.ibd文件时如何批量恢复InnoDB

---- 背景 很多时候因为 MySQL 数据库不能启动而造成数据无法访问,但应用的数据通常没有丢失,只是系统空间等其它文件损坏了,或者遇到 MySQL 的 bug。...对于 MyISAM 引擎的空间,直接把对应的数据文件拷贝到一个新的数据库就行了,数据就可以恢复了。对于 InnoDB 引擎的数据库空间可以采用传输空间的方式把数据救回来。...// 分析一个 .frm 文件生成建的语句 mysqlfrm --diagnostic / var /lib/mysql/test/t1.frm // 分析一个目录下的全部.frm文件生成建表语句...有很多时候也可以其它库里面生成建表语句,如同一个应用的其它数据库不同的测试环境,采用下面的 mysqldump 生成建表语句: mysqldump -- no -data --compact my_db...mysql/my_db # ll *.ibd|wc ls: cannot access '*.ibd' : No such file or directory 0 0 0 可以看到所有的 .idb

1.7K10

MySQL备份原理详解 转

冷备份 最简单的备份方式就是,关闭MySQL服务器,然后将data目录下面的所有文件进行拷贝保存,需要恢复时,则将目录拷贝到需要恢复的机器即可。这种方式确实方便,但是在生产环境中基本没什么作用。...理解Mysqldump工作原理,一定要将事务(innodb)和非事务(比如myisam)区别对待,因为备份的流程与此息息相关。...而且5.6的mysqldump利用保存点机制,每备份完一个就将一个上的MDL锁释放,避免对一张锁更长的时间。...innobackupex脚本用来备份非 InnoDB ,同时会调用 xtrabackup命令来备份 InnoDB ,innobackupex的基本流程如下: 1.开启redo日志拷贝线程,最新的检查点开始顺序拷贝...redo日志; 2.开启idb文件拷贝线程,拷贝innodb的数据 3.idb文件拷贝结束,通知调用FTWRL,获取一致性位点 4.备份非innodb(系统)和frm文件

2.3K10

三高Mysql - Mysql备份概览

与存储引擎无关,可以在多种存储引擎下进行备份恢复,对innodb引擎支持热备,「对MyISAM引擎支持温备(施加锁)」。 免费。 如何学习Mysqldump?...理论上是可行的但是实际操作会发现有很多问题,以Innodb的存储引擎的数据为例,它不仅涉及Binlog文件idb文件(数据库原始数据)以及frm文件,还包括独有的redo log和 undo log这些文件等...实现思路如下:核心的思想是监听redo log文件变化的同时,备份Idb文件和备份过程中进行了改动的redo log文件。...需要注意的是增量备份仅能应用于「InooDB」XtraDB,下面的命令用于创建增量备份的数据。...#--incremental-basedir 指定上一次全备增量备份的目录 增量备份的恢复命令: [root@centos ~]# innobackupex --apply-log --redo-only

56020

三高Mysql - Mysql备份概览

与存储引擎无关,可以在多种存储引擎下进行备份恢复,对innodb引擎支持热备,对MyISAM引擎支持温备(施加锁)。 免费。 如何学习Mysqldump?...理论上是可行的但是实际操作会发现有很多问题,以Innodb的存储引擎的数据为例,它不仅涉及Binlog文件idb文件(数据库原始数据)以及frm文件,还包括独有的redo log和 undo log这些文件等...实现思路如下:核心的思想是监听redo log文件变化的同时,备份Idb文件和备份过程中进行了改动的redo log文件。...需要注意的是增量备份仅能应用于InooDBXtraDB,下面的命令用于创建增量备份的数据。...#--incremental-basedir 指定上一次全备增量备份的目录 增量备份的恢复命令: [root@centos ~]# innobackupex --apply-log --redo-only

48030

Git仓库中恢复已删除的分支、文件丢失的commit

在使用Git的过程中,有时可能会有一些误操作 比如:执行checkout -f reset -hard branch -d删除一个分支 结果造成本地(远程)的分支某些...commit丢失 可以通过reflog来进行恢复,前提是丢失的分支commit信息没有被git gc清除 一般情况下,gc对那些无用的object会保留很长时间后才清除的...reflog是git提供的一个内部工具,用于记录对git仓库进行的各种操作 可以使用git reflog showgit log -g命令来看到所有的操作日志 恢复的过程很简单...Q:怎样找回历史版本中删除的文件?...A:先确定需要恢复文件恢复成哪一个历史版本(commit),假设那个版本号是: commit_id,那么 git checkout [commit_id] -- 就可以恢复

3.3K30

MySQL的数据备份与恢复

Mysql 和 Innodb引擎,所以部分是没有真正的方案,也有些是交叉分类的(比如在热备又在逻辑文件中) 按备份类型: 热备:在数据库运行过程中直接备份 冷备:在数据库停止的情况下备份,一般直接复制相关的物理文件即可...对于 Innodb 引擎来说,因为其支持 MVCC 功能,所以可以先开启一个事务,然后导出一组相关的,最后提交来实现一致的备份,当然隔离级别要设置为 REPEATABLE READ 对于 mysqldump...冷备 Innodb 冷备是最简单的,通常只需写个脚本来复制 MySQL 的文件,然后将这些文件放到对应数据库的目录下即可实现数据恢复: .frm结构文件 .idb独立空间文件 redo重做日志文件 共享空间文件...不过可以借用 XtraBackup 开源的热备工具,备份和恢复速度比 mysqldump 快,具体的安装过程这里不说明了 5.1 全量备份 # 1....--incremental-basedir=/mysqlBackup/2021-10-27_20-09-29/ # 上次全备增量备份的目录 # 3.

9.2K30

MySQL InnoDB数据恢复,丢失ibdata1时怎么安全恢复

主要也是参考下面链接最终成功恢复。 这篇文章的步骤稍微有点多。有些是恢复不必要的,这里做一下自己的整理。 如何在删除ibdata1的情况下恢复 数据库宕机恢复数据迁移数据,几个重要节点。...4 丢失ibdata1 ibdata1文件损坏,与数据库数据文件不匹配时的数据恢复。...# DISCARD TABLESPACE 相当于清空新数据 # IMPORT TABLESPACE 相当于文件导入数据 小技巧和经验 在没有有效ibdata1的时候,其实可以放弃一键恢复的想法了...建立完数据的时候,使用discard...命令删除空间 这时候即可批量进行,也可以单个进行,(不用再理会ibdata1文件了) 譬如说,批量恢复了20张,其中有2个有乱码。...那么可以使用DROP命令删除这个,(换一下字段格式)重新建立这个,然后重复 DISCARD, 复制table.idb文件,IMPORT 命令,测试是否找到正确格式。

3.4K30

数据惊魂日

第一件事锁 `lock table xxx;` 开搜索引擎开始查找,大多方案都是通过binlog进行恢复。但是我的mysql跑在了arm的机器上,为了节省资源没开binlog....继续搜索找到了一个通过idb文件 恢复的方案。首先备份你的idb文件。...下载并编译恢复程序 #下载并解压文件 wget https://launchpad.net/percona-data-recovery-tool-for-innodb/trunk/release-0.5...-0.5.tar.gz #准备编译环境,在arm的机器上好多类库不好找到,我已经把idb文件拷贝到另外 一台x86的centos机器上 #安装依赖库 yum install ncurses-devel.../page_parser -5 -f ~/mysql/temp_monitor.ibd #之后会产生一个pages-888888888的目录 #通过线上的结构创建.h文件 mysql/percona-data-recovery-tool-for-innodb

27030

故障分析 | 库名-大小写不规范,运维两行泪

---一、问题描述客户需要做一套库的迁移,因为库的数据量不大,40G左右,并且需要到远程机器上去做全量恢复。所以第一时间想到的自然是 mysqldump 工具来做。但是没想到会发生这种“惨案”。...存在,报错的 table 也存在;select 查看表数据:报错 table doesn't exist ;观察物理文件:db.opt 文件不存在;报错的 table,idb 文件不存在,仅有 frm...图片图片 mysqldump 报错所提示的名中包含了大写,不难推断出:是在 lower_case_table_names = 0 条件下,创建了该,所以名和物理文件名也都包含大写。...=1 条件下,下发 Drop database 操作,由于 frm 文件名包含大写,无法匹配,因此残留,而 idb 文件不论大小写都会被删除。...场景1:将 MySQL 的环境变量 lower_case_table_names 默认的 0 ,修改为1先将库名和名转换为小写;编辑配置文件,添加配置:lower_case_table_names

60810

MLOG_CHECKPOINT缺失下紧急数据恢复

恢复的时候需要依赖数据字典,因为InnoDB根本不知道某个具体的space对应的ibd文件是哪个,这些信息都是数据字典维护的。...因为异常断电,已找不到这个标记,整个Redo日志文件都会被忽略,innodb引擎启动失败。若是有备份的话,可以用备份恢复,再通过binlog追上最新数据。...若是没有备份的话,通过救援模式启动数据库,导出数据,再导入恢复。 【解决过程】 1.查找备份文件 发现备份脚本在很久之前就没工作了,备份文件不是最新的。无法使用备份恢复。...=0; SET GLOBAL sync_binlog=0; 2)数据导入 在主库导出的备份文件,传输到库机器上,依次导入: mysql -uroot -p <mysql.sql 导入MySQL库后,记得执行...数据恢复完成,指定这个实例为主库,恢复业务。后期重做库,恢复数据同步复制。 MySQLdump一些常用参数说明 1、–all-databases , -A 含义:导出全部数据库。

1.3K10

Mysql 备份恢复与xtrabackup备份

数据量达到PB更高时(facebook),mysqldump可能成为首选,占用空间小,但技术成本高。需要对mysqldump进行二次开发(大数据量公司首选)。...备份开始时首先会开启一个后台检测进程,实时检测mysql redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统空间文件...--export /path/to/backup    此命令会为每个innodb空间创建一个以.exp结尾的文件,这些以.exp结尾的文件则可以用于导入至其它服务器...该选项对innodb引擎无效,还是会备份所有innodb。此外,此选项也可以接受一个文件为参数,文件中每一行为一个要备份的对象。...--defaults-file 该选项指定了哪个文件读取MySQL配置,必须放在命令行第一个选项的位置。

15.3K30

《MySQL核心知识》第14章:数据备份与恢复

2.确保 mysql 打开log-bin,有了 binarylog,mysql才可以在必要的时候做完整恢复基于时间点的恢复基于位置的恢复。...恢复 1.停掉应用,执行 mysql 导入备份文件. mysql –u root –p*** pointcard < pointcard.sql 2.使用 mysqlbinlog 恢复mysqldump...下一行将恢复给定的起始位置直到二进制日志结束的所有事务。...MyISAM修复:一张损坏的的症状通常是查询意外中断并且能看到下述错误: “tbl_name.frm”被锁定不能更改。 不能找到文件“tbl_name.MYI”(Errcode:nnn)。...处理器得到错误nnn 解决方法如下: 方法一: myisamchk -r tablename 上面的方法几乎能解决所有问题,如果不行,则使用: myisamchk -o tablename 方法二

41320

MySQL备份工具——mysqldump

MySQL的安装包里面提供了“mysqldump”工具,它可以执行逻辑备份,如果执行备份的对象是InnoDB存储引擎,则可以执行热备份,默认情况下,它对所有的引擎执行温备份。...在大多数的运维场景中,用户利用Linux的“crontab”,Windows的任务调度程序自动运行“mysqldump”。...“mysqldump”可以将的内容转储为文件,具有如下特点: 备份全部的数据库、指定的数据库,指定的。 允许在本地远程进行备份。 独立于存储引擎。 生成文本格式的转储文件。...“--quick”:快速中查询一条记录,不使用的缓冲集。...恢复数据 利用“mysql”客户端加载转储文件进行数据恢复,例如: mysql --login-path=login-path database < backup_file.sql 也可以将一个数据库复制到另外一台服务器

16310

Mysql备份与恢复(2)---逻辑备份

数据恢复 恢复 (1) 登录mysql,选择对应的数据库,然后设置编码。 (2) 使用source命令导入备份数据。...:恢复数据时会丢失掉备份点开始的更新数据,所以我们需要结合mysqlbinlog进行二进制日志增量备份,首先修改/etc/my.cnf文件,在[mysqld]下启用二进制日志: log_bin=mysql-bin...而且mysqlbinlog可以通过时间间隔来精确地恢复某个时刻的数据,我们看看bonlog几个可传参数: --start-datetime:某个时间点开始恢复数据 --stop-datetime:恢复截止到某个时间内的数据...--start-position:开始恢复数据的位置信息,位置信息可以日志文件的log_pos中获取。...--end-position:截止恢复数据的位置信息,位置信息可以日志文件的log_pos中获取。

2.3K21

如何在Ubuntu操作系统上配置MySQL服务器?

主要的两个选项是复制数据库文件使用mysqldump.   文件复制   默认情况下,MySQL在其数据目录/var/lib/mysql中为每个数据库创建一个目录。   ...mysqldump恢复   恢复mysqldump数据库类似于创建转储的方式,但我们使用的是,mysql而不是mysqldump,如以下恢复命令所示:   $ mysql -u root -p demodb...如果要在现有数据库上恢复备份,则应先删除数据库,或者删除并重新创建数据库本身。我们可以通过将选项$ --add-drop-table与创建mysqldump....这导致mysqldump向它写入的备份文件添加一个命令,该命令在重新创建之前删除。   九、数据库引擎   数据库引擎是在幕后工作的进程,文件写入和读取数据。...InnoDB   InnoDB比数据库更容错,MyISAM并以更小的数据库损坏风险处理崩溃和恢复

6.2K30

mysql备份与恢复

也就是把数据MySQL库中以逻辑的SQL语句的形式直接输出生成备份的文件的过程。...17 --master-data:在备份文件中写入备份时的binlog文件,在恢复进,增量数据从这个文件之后的日志开始恢复。...因此,该选项不能保证导出文件中的在数据库之间的逻辑一致性。不同数据库的导出状态可以完全不同。 25 --single-transaction:适合innodb事务数据库的备份。...分库备份的意义是在所有库都备份成一个备份文件时,恢复其中一个库的数据是比较麻烦的,所以分库备份,利于恢复。...:锁 -l:只读锁 -d:只备份结构 -t:只备份数据 --single-transaction:适合innodb事务数据库的备份 InnoDB在备份时,通常启用选项--single-transaction

2.4K41
领券