Mysql备份与恢复(1)---物理备份
数据库对企业来说最重要的莫过于其中的数据,所以做好数据库的备份是一个不可或缺的工作。数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小。所以,本篇文章主要数据库数据备份与恢复进行介绍。由于MyISAM存储引擎中备份数据是将表保存到单独的文件所以比较简单,所以这里我主要针对InnoDB存储引擎介绍备份与恢复机制。
全量备份与增量备份的区别
全量备份:
每次备份都进行全量备份,所以如果数据量大的情况下,进行全量备份会消耗较多的时间且对数据库压力比较大,但是由于全量备份每次都是最新的备份,所以恢复数据的时候效率更快。
增量备份:
只备份每天增量的日志,所以备份时效率更高对数据库压力也较小,但是恢复回复数据时就需要从全量备份日志加上每天的增量日志去进行恢复数据,所以恢复数据效率比较低。
Mysql数据备份大致分为2类:物理备份与逻辑备份。本篇文章我们先看看物理备份。
物理备份
物理备份分为热备份和冷备份。
冷备份
冷备份是最简单的备份方式,其实就是在备份数据时停掉Mysql服务,然后将data目录下的数据文件拷贝到备份地址进行存储。当Mysql出现宕机时,将备份文件拷贝到data目录替换即可完成数据恢复。但是一般情况下不使用冷备份的方式,因为生产环境下一般都有业务在跑,所以不可能每次备份都停止Mysql服务去进行备份工作。
热备份
快照备份
物理备份一般还有一种方式就是热备份,热备份相比于冷备份的好处在哪呢?热备份可以在Mysql服务开启的情况下执行备份操作,只是在热备份时会添加只读这类型的限制。热备份第一种介绍的备份方式就是快照备份。快照备份其实就是将所有的数据文件放置在同一个分区,然后对这个分区进行快照备份,但是快照备份只能存储在本地磁盘,如果本地磁盘出现故障,则可能出现快照备份数据的丢失。正是由于可能存在磁盘损坏导致数据丢失的情况下,所以生产环境下一般也不会使用热备份去备份数据。
xtrabackup备份
热备份另一种方式就是xtrabackup工具备份。xtrabackup工具2.3版本以下无法备份MyISAM存储引擎,它可以备份5.1到5.7之间版本的InnoDB存储引擎的数据。xtrabackup工具是基于InnoDB存储引擎的crash-recovery功能,先复制物理文件,再根据log进行恢复,保证数据一致性。接下来我们可以一起看看xtrabackup工具如何进行备份工作。
使用wget下载xtrabackup工具并使用yum命令安装:

使用xtrabackup备份,命令为:
xtrabackup --backup --user=root --password='123' --target-dir=/backups/**

可以看到,全量备份完成会显示当前备份的lsn号,下次进行增量备份就只会备份lsn大于此页的数据。我们可以查看下我们刚才全量备份的数据:

可以发现目录刚好和我们的数据库一一对应,每个文件夹中实际上就是对应数据库的备份数据。我们可以注意到根目录下还有几个文件,接下来我们来看下这几个文件的具体用途:
ibdata1:共享表空间文件,创建数据库时如果开启innodb_file_per_table参数,才可以使用xtrabackup工具备份单个数据库,否则默认都是全部数据库都进行备份。
backup-my.cnf:此文件存储一些my.cnf的有关于备份的配置信息。
xtrabackup_binlog_info:这个文件是用来记录备份开始时二进制文件的位置。
xtrabackup_checkpoints:这个文件记录备份的一些基本信息:比如备份开始和结束的lsn号,是全量备份还是增量备份等信息。
xtrabackup_info:这个文件记录备份的概要信息。
xtrabackup_logfile:备份的日志。
- 将经过backup的数据进行prepare得到完整可用的数据,使用命令:
- xtrabackup --prepare --use-memory=100M --target-dir=/backups

这里对命令几个参数做下解释:
--use-memory:该参数不带则默认prepare操作占用100M内存,如果数据量大我们可以将use-memory指定更大的内存加快prepare工作。
--target-dir:备份文件所在路径,我是放在/backups/。
- 恢复数据,恢复数据必须保证mysql中data目录不能存在任何数据,否则会报错。恢复数据实际上就是将备份数据拷贝到Mysql的data目录下,恢复数据使用--copy-back参数。使用命令:
- xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backups/
这里对命令几个参数做下解释:
--datadir:--datadir有两个方法进行配置:可以在my.cnf文件中指定,如果my.cnf文件没有指定该参数则恢复文件时必须指定--datadir参数。
--target-dir:备份文件所在路径,我是放在/backups/。
接下来演示下如何进行数据恢复:
停止数据库服务并且清掉data目录下所有数据:
systemctl stop mysqld.service && rm -rf /var/lib/mysql/*
恢复数据:
- xtrabackup --copy-back --datadir=/var/lib/mysql --target-dir=/backups/

最后,重启数据库:
- systemctl start mysqld.service
到这里备份数据就成功进行恢复到数据库中了。当然更常用的备份方式其实是逻辑备份,使用Mysql自带mysqldump工具进行备份操作,关于逻辑备份的知识将在下一篇进行讲解。
欢迎关注公众号:程序猿周先森。

欢迎关注公众号:程序猿周先森。文章原创于微信公众号,本平台不定时更新。
Mysql备份与恢复(1)---物理备份的更多相关文章
- Mysql备份与恢复(2)---逻辑备份
数据库及时备份可以帮助我们在数据库出现异常宕机时及时的使用备份数据进行恢复工作,将因为数据库宕机产生的影响降低到最小.上一篇针对使用xtrabackup工具进行物理备份和数据恢复做了一个详细讲解,本篇 ...
- Data Base mysql备份与恢复
mysql 备份与恢复 为什么要备份: 由于系统使用到了MySQL 数 据库,所以每天的工作,就设计到了MySQL数据库的备份问题.但如果每天手工来做MySQL数据库的定时备份,工作量不说,时间还不 ...
- MYSQL的备份与恢复--物理备份xrabackup
目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...
- mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)
一.增量备份概述 xtrabackup 和innobackupex 二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据.可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份 ...
- MySQL的备份与恢复理解与备份策略
MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...
- (4.16)mysql备份还原——物理备份之XtraBackup实践
关键词:XtraBackup实践,物理备份,xtrabackup备份,innobackupex备份 [1]如何使用? [3]系列:innobackupex --help |more [4]系列:xtr ...
- Mysql不锁表备份之Xtrabackup的备份与恢复
一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...
- 使用 xtrabackup 进行MySQL数据库物理备份
0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...
随机推荐
- 云数据库 MySQL 8.0 重磅发布,更适合企业使用场景的RDS数据库
点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 云数据库MySQL 8.0 升级发布会 2019年5月29日15时,阿里云云数据 ...
- H3C 广域网连接方式
- Treap(树堆)入门
作者:zifeiy 标签:Treap 首先,我么要知道:Treap=Tree+Heap. 这里: Tree指的是二叉排序树: Heap指的是堆. 所以在阅读这篇文章之前需要大家对 二叉查找树 和 堆( ...
- Spring security用户URL权限之FilterSecurityInterceptor
总: 用户通过浏览器发送URL地址,由FilterSecurityInterceptor判断是否具有相应的访问权限. 对于用户请求的方法权限,例如注解@PreAuthorize("hasRo ...
- poj 3279(开关问题)(待完成)
传送门:Problem 3279 #include<iostream> #include<cstdio> #include<cstring> using names ...
- H3C 调试OSPF
- 【codeforces 764C】Timofey and a tree
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- P1065 汪老师的烟
题目描述 汪老师有n根烟,他每吸完一根烟就把烟蒂保存起来,\(k(k>1)\) 个烟蒂可以换一个新的烟,那么 汪老师 最终能吸到多少根烟呢? 输入格式 每组测试数据一行包括两个整数 \(n,k( ...
- H3C IEEE EUI-64格式
- linux进程睡眠的介绍
对于一个进程"睡眠"意味着什么? 当一个进程被置为睡眠, 它被标识为处于一个特殊的状 态并且从调度器的运行队列中去除. 直到发生某些事情改变了那个状态, 这个进程将不被 在任何 C ...