我的编程空间,编程开发者的网络收藏夹
学习永远不晚

初识MariaDB之4——Xtrabackup备份与还原

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

初识MariaDB之4——Xtrabackup备份与还原

一、基础知识

mysqldump是mysql自带的一个单线程的逻辑备份工具,当数据量很大时,使用mysqldump备份的时间会非常长,且无法做增量备份,xtrabackup是一款基于底层块复制、开源的备份工具,可以对数据库在线实现备份。xtrabackup支持对Innodb和Xtradb存储引擎的完全、增量和差异备份,对于不支持事物的MyISAM存储引擎只能完全备份。

二、备份工具

初识MariaDB之4——Xtrabackup备份与还原初识MariaDB之4——Xtrabackup备份与还原

Xtrabackup工具用到的命令为xtrabackup和innobackupex,而innobackupex又是将xtrabackup使用perl脚本语言封装的二次版本,其目的时为了便于使用

初识MariaDB之4——Xtrabackup备份与还原初识MariaDB之4——Xtrabackup备份与还原

本文重点介绍innobackupex为例,介绍完全备份、增量备份和差异备份

三、实验说明

本次实验采用CentOS7.4系统,数据库版本为MariaDB 5.5.56,innobackupex 版本为2.3.6。

1.完全备份

(1)创建备份账户

MariaDB [hellodb]> grant all privileges on *.* to 'backup'@'localhost' identified by 'backuppassword';

MariaDB [hellodb]> flush privileges;

(2)创建备份目录

[root@node1 ~]# mkdir -pv /data/back

[root@node1 ~]# chown -R mysql.mysql /data/back

(3)执行备份

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword  /data/back

看到completed OK!提示后表示备份成功,上述命令还可以使用--databases="db1 db2"来备份制定的库,或者使用--no-timestamp不自动生成时间戳

初识MariaDB之4——Xtrabackup备份与还原初识MariaDB之4——Xtrabackup备份与还原

(4)关闭数据库服务,删除数据,模拟数据库损坏

[root@node1 back]# systemctl stop mariadb.service

(5)恢复前准备(将已提交的事物同步到磁盘,未提交的事务回滚)

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword  --apply-log /data/back/2018-04-24_07-38-47/

(6)恢复数据(如果用root账号操作,需要更改恢复后数据目录的属组和属主)

innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword  --copy-back /data/back/2018-04-24_07-38-47/

(7)重启数据库服务,至此操作完成

2.增量备份

增量备份的实现是根据每一个Innodb页都有一个log sequence number(LSN),当数据发生变化时,其所在的Innodb页的LSN会自动增长,增量备份就是根据LSN的范围序列实现备份,每次备份的LSN号可以在xtrabackup_checkpoints中查看。其备份的方式与全备略有不同,增量备份需要给予一个全被或者上一次增量来进行,具体步骤如下:

(1)创建一个完全备份

[root@node1 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword  /data/back

(2)基于已创建的完全备份,做增量备份

[root@node1 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword --incremental /data/incremental/ --incremental-basedir=/data/back/2018-04-25_06-32-18/

(3)基于已第一次创建的增量备份,做第二次增量备份(将--incremental-basedir指向完备份,则做的是差异备份)

[root@node1 ~]# innobackupex --defaults-file=/etc/my.cnf --user=backup --password=backuppassword --incremental /data/incremental/ --incremental-basedir=/data/incremental/2018-04-25_06-34-15/

(4)删除数据库文件,模拟故障(提前保存二进制文件,备份到故障发生点之间的还原还需要通过二进制文件)

[root@node1 ~]# cat /data/incremental/2018-04-25_06-39-57/xtrabackup_binlog_info

[root@node1 ~]# mysqlbinlog --start-position=1721 mysql-binlog.000002 > /data/incremental/binlog.sql

[root@node1 ~]# systemctl stop mariadb.service

[root@node1 ~]# rm -rf /var/lib/mysql*

(5)恢复前准备(出除最后一个增量外其他都需要使用--redo-only选项,其作用是不进行回滚操作,因为增量1中未提交的事务在增量2中可能会提交,所以不回滚。最后1个增量也可以用--redo-only选项,就算他不回滚,根据mariadb的crash-recover机制,启动时也会回滚未提交事务)

[root@node1 ~]# innobackupex --apply-log --redo-only /data/back/2018-04-25_06-32-18/

[root@node1 ~]# innobackupex --apply-log --redo-only /data/back/2018-04-25_06-32-18/ --incremental-dir=/data/incremental/2018-04-25_06-34-15/

[root@node1 ~]# innobackupex --apply-log --redo-only /data/back/2018-04-25_06-32-18/ --incremental-dir=/data/incremental/2018-04-25_06-39-57/

[root@node1 ~]# chown -R mysql.mysql /var/lib/mysql

(6)恢复数据库

[root@node1 ~]# innobackupex --copy-back  /data/back/2018-04-25_06-32-18/

[root@node1 ~]# mysql < /data/incremental/binlog.sql

补充说明:

1.xtrabackup是通过读取LSN从而指导数据的更改的每一个innodb page页的大小默认是16K,实际测试中发现,如果数据量变化很小,即使binlog中的position发生了变了,使用增量备份的时候LSN号不会发生变化,但是恢复后的数据是一致的

初识MariaDB之4——Xtrabackup备份与还原初识MariaDB之4——Xtrabackup备份与还原

2.在恢复增量备份的准备阶段时--incremental-dir选项后面不能使用相对路径,否则会提示找不到要恢复增量备份的xtrabackup_logfile


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

初识MariaDB之4——Xtrabackup备份与还原

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

通过Docker Compose、Nginx和MariaDB实现PHP应用程序的数据备份与还原

随着云计算和容器化技术的快速发展,越来越多的应用程序选择使用Docker来部署和运行。在Docker生态系统中,Docker Compose是一个非常受欢迎的工具,它可以通过一个单一的配置文件来定义和管理多个容器。本文将介绍如何使用Dock
2023-10-21

编程热搜

目录