Mysql数据库实现备份与数据恢复

目录一、为什么要备份数据?二、备份工具介绍三、数据备份的方式3.1 完全备份3.1.1 备份mysql数据库3.1.2 恢复mysql数据库3.2 增量备份3.2.1 备份mysql数据库3.2.2 恢复mysql数据库3.3 差异备份3.3.1 备份mysql数据库3.3.2 恢复mysql数据库四、总结

一、为什么要备份数据?

首先我们得知道为什么要做数据备份,我认为作为一个合格的云计算运维工程师,对数据做定期的备份是必备的基本技能和反射条件。对数据的备份能够防止系统崩溃或人为失误操作带来的数据丢失的安全隐患。我们都知道数据有多份冗余,但不等于备份,比如像xfs和ext4这些文件系统,它们都属于日志式的文件系统,对数据能进行相应的日志缓存,但也只能防止系统的突然崩溃或断电带来的数据丢失,因为它们可以通过日志进行回溯追踪,从而恢复相应的数据。那如何对mysql数据库备份呢?那得通过相关备份工具来实现了。接下来将会详细介绍如何通过xtrabackup工具来进行mysql数据库的备份及恢复过程。

二、备份工具介绍

备份工具 说明 备份类型

libbackup
官方备份工具,收费
物理备份

xtrabackup
开源社区备份工具
物理备份

mysqldump
官方自带备份工具,开源免费
逻辑备份

mysqlbackup
官方备份工具
物理备份

三、数据备份的方式

这三种数据备份的方式我在xfs文件系统的完全备份、增量备份及数据恢复一文中简单介绍过,大家可以去看一看。

3.1 完全备份

每次对数据进行完整的备份,即对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础。

3.1.1 备份mysql数据库

添加测试数据:
Mysql数据库实现备份与数据恢复

(1)备份测试数据(完全备份)

innobackupex --user=root --password='ZRSanqy@123' /xtrabackup/

Mysql数据库实现备份与数据恢复
(2)备份目录下查看备份结果

ls /xtrabackup/

Mysql数据库实现备份与数据恢复

3.1.2 恢复mysql数据库

(1)停止数据库

systemctl stop mysqld

(2)删除mysql数据(用于恢复测试)

rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log

(3)重演恢复

innobackupex --apply-log /xtrabackup/2020-08-20_14-55-22/

Mysql数据库实现备份与数据恢复
(4)查看mysql恢复到指定的目录

cat /etc/my.cnf

Mysql数据库实现备份与数据恢复
(5)mysql数据恢复

innobackupex --copy-back /xtrabackup/2020-08-20_14-55-22/

Mysql数据库实现备份与数据恢复
(6)修改恢复的目录属主和属组

chown mysql.mysql /var/lib/mysql -R

(7)启动mysqld服务

systemctl start mysqld

(8)查看数据库中的数据

select * from test.t1

Mysql数据库实现备份与数据恢复
数据恢复成功。

3.2 增量备份

只有那些在上次完全备份或者增量备份后被修改的文件才会被备份。以上次完整备份或上次的增量备份的时间为时间点,仅备份这之间的数据变化。

3.2.1 备份mysql数据库

事先准备测试数据:
Mysql数据库实现备份与数据恢复

(1)备份测试数据(完全备份)

innobackupex --user=root --password='ZRSanqy@123' /xtrabackup
ls /xtrabackup

Mysql数据库实现备份与数据恢复
(2)一次增量备份

innobackupex --user=root --password='ZRSanqy@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-20_16-53-22/     --在全备份基础上的第一次增量备份

Mysql数据库实现备份与数据恢复
(3)二次增量备份

再次准备测试数据:
Mysql数据库实现备份与数据恢复

innobackupex --user=root --password='ZRSanqy@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-08-20_17-11-18/    --在第一次增量备份基础上的第二次增量备份

Mysql数据库实现备份与数据恢复

3.2.2 恢复mysql数据库

(1)停止数据库

systemctl stop mysqld

(2)删除mysql数据(用于恢复测试)

rm -rf /var/lib/mysql/*

(3)依次重演恢复

完全备份重演恢复

innobackupex --apply-log --redo-only /xtrabackup/2020-08-20_16-53-22/

一次增量备份重演恢复

innobackupex --apply-log --redo-only /xtrabackup/2020-08-20_16-53-22/ --incremental-dir=/xtrabackup/2020-08-20_17-11-18/

二次增量备份重演恢复

innobackupex --apply-log --redo-only /xtrabackup/2020-08-20_16-53-22/ --incremental-dir=/xtrabackup/2020-08-20_17-49-22

(4)mysql数据恢复

innobackupex --copy-back /xtrabackup/2020-08-20_16-53-22/  --重演恢复完后再次恢复全备份数据即可

(5)修改恢复的目录属主和属组

chown mysql.mysql /var/lib/mysql -R

(6)启动mysqld服务

systemctl start mysqld

(7)查看数据库中的数据

select * from test.t1

Mysql数据库实现备份与数据恢复

3.3 差异备份

备份那些自从第一次次完全备份之后被修改过的所有文件,备份的时间起点是从第一次次完整备份起,且以后每次备份都是和第一次完整备份进行比较(注意是第一次,不是上一次),备份自第一次完整备份以来所有的修改过的文件。备份数据量会越来越大。

3.3.1 备份mysql数据库

事先准备测试数据:

这里以3.2节增量备份恢复的数据作为原数据进行数据备份恢复测试。

(1)备份测试数据(完全备份)

innobackupex --user=root --password='ZRSanqy@123' /xtrabackup/     --完整备份

Mysql数据库实现备份与数据恢复
(2)一次差异备份

添加测试数据:
Mysql数据库实现备份与数据恢复

innobackupex --user=root --password='ZRSanqy@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-08-20_19-22-22/   --基于完整备份的第一次差异备份

Mysql数据库实现备份与数据恢复
(3)二次差异备份

再次添加测试数据:
Mysql数据库实现备份与数据恢复

innobackupex --user=root --password='ZRSanqy@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-08-20_19-22-22/   --基于完整备份的第二次差异备份

Mysql数据库实现备份与数据恢复

3.3.2 恢复mysql数据库

(1)停止数据库

systemctl stop mysqld

(2)删除mysql数据(用于恢复测试)

rm -rf /var/lib/mysql/*

(3)依次重演恢复

完全备份重演恢复(恢复全量的redo log)

innobackupex --apply-log --redo-only /xtrabackup/2020-08-20_19-22-22/

重演恢复某次差异备份(恢复差异的redo log)

innobackupex --apply-log --redo-only /xtrabackup/2020-08-20_19-22-22/ --incremental-dir=/xtrabackup/2020-08-20_19-48-32/   --这里选择重演恢复第二次的差异备份

(4)mysql数据恢复

innobackupex --copy-back /xtrabackup/2020-08-20_19-22-22/   --重演恢复完后再次恢复全备份数据即可

(5)修改恢复的目录属主和属组

chown mysql.mysql /var/lib/mysql -R

(6)启动mysqld服务

systemctl start mysqld

(7)查看数据库中的数据

select * from test.t1

Mysql数据库实现备份与数据恢复

四、总结

mysql的三种备份数据和恢复数据的方式方法是一样的,重要的是要掌握其实原理。
对于完全备份来说,操作步骤是三者中最简单的,由于每次都是对整个数据的完全备份,所以其备份速度相对较慢,所占备份存储也大,但它在备份和恢复时不拖泥带水,也很方便。
对于增量备份来说,它的每次增量备份都是基于其上一次增量备份后到现在产生的数据,因此其备份的数据量小,占用空间小,备份速度快。但它的数据恢复较两种方式来说相对复杂。在数据恢复时,需要从上一次的完整备份起按备份时间顺序,逐个备份版本进行恢复,恢复时间长,如中间某次的备份数据损坏,将导致数据的丢失。
对于差异备份来说,占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后一次的差异版本,恢复速度介于完整备份和增量备份之间。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Mysql数据库实现备份与数据恢复

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Mysql数据库实现备份与数据恢复
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏