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

一、基础知识

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

二、备份工具

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

本文重点介绍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)创建备份目录

[[email protected] ~]# mkdir -pv /data/back

[[email protected] ~]# 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不自动生成时间戳

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

[[email protected] 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)创建一个完全备份

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

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

[[email protected] ~]# 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指向完备份,则做的是差异备份)

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

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

[[email protected] ~]# cat /data/incremental/2018-04-25_06-39-57/xtrabackup_binlog_info

[[email protected] ~]# mysqlbinlog --start-position=1721 mysql-binlog.000002 > /data/incremental/binlog.sql

[[email protected] ~]# systemctl stop mariadb.service

[[email protected] ~]# rm -rf /var/lib/mysql*

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

[[email protected] ~]# innobackupex --apply-log --redo-only /data/back/2018-04-25_06-32-18/

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

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

[[email protected] ~]# chown -R mysql.mysql /var/lib/mysql

(6)恢复数据库

[[email protected] ~]# innobackupex --copy-back  /data/back/2018-04-25_06-32-18/

[[email protected] ~]# mysql < /data/incremental/binlog.sql

补充说明:

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

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

原文地址:http://blog.51cto.com/arkling/2114462

时间: 2024-10-27 04:45:50

初识MariaDB之4——Xtrabackup备份与还原的相关文章

Xtrabackup备份与还原

Xtrabackup之备份与还原 Xtrabackup是percona的一个开源项目,可以热备份innodb,XtraDB,和MyISAM(会锁表),可以看做是mysql商业备份工具InnoDB Hotbackup的免费替代品. ①xtrabackup只能备份InnoDB和XtraDB两种数据库表,支持在线热备份,可以在不加锁的情况下备份Innodb数据表,不过此工具不能操作MyiSAM引擎表 ②innobackupex是一个脚本封装,封装了xtrabackup,能同时处理Innodb和MyIS

xtrabackup备份、还原

一.xtrabackup简介 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mysqldump备份就不太适合了. 这时就需要一种好用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup. Xtrabackup实现是物理备份,而且是物理热备 目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup:ibbackup是商

使用xtrabackup备份和还原mysql的多实例(基于全备)

1)安装percona-xtrabackup Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份 工具InnoDB Hotbackup的一个很好的替代品 # 下载安装包: # cd /usr/local/src # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/redhat/6/x86_64/percona-xtrabac

使用xtrabackup备份和还原mysql的多实例

1.安装percona-xtrabackup # 下载安装包: # cd /usr/local/src # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.2/binary/redhat/6/x86_64/percona-xtrabackup-2.3.2-1.el6.x86_64.rpm # 安装依赖库: # yum -y install perl perl-devel libaio libaio-

Xtrabackup备份、还原、恢复Mysql操作大全

环境:CentOS 6.7  + Mysql 5.7.19 + Xtraback 2.4.8 innobackupex常用参数: --user=USER 指定备份用户,不指定的话为当前系统用户 --password=PASSWD 指定备份用户密码 --port=PORT 指定数据库端口 --defaults-group=GROUP-NAME 在多实例的时候使用 --host=HOST 指定备份的主机,可以为远程数据库服务器 --apply-log 回滚日志 --database 指定需要备份的数

xtrabackup备份还原mariadb数据库

一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要加表锁.mysqldump备份方式是通过用户名密码连接到数据库,将其要备份的数据库用SQL语句的形式输出到标准输出,这种逻辑备份的方式最大的缺点是备份和恢复的速度较慢,如果数据库过大,mysqldump备份就显得力不从心了.这时选择用xtrabackup来备份就能很好解决数据库过大而导致备份过慢的问

MariaDB xtrabackup物理备份与还原

xtrabackup物理备份 1.1 安装xtraback 安装依赖: [[email protected] ~]# yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio* 安装: [[email protected] ~]# rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm Preparing... #################################

使用xtrabackup备份恢复Mariadb数据库

使用xtrabackup进行备份 Xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等功能节约磁盘空间和流量: (4)自动实现备份检验: (5)还原速度快: 官方介绍和下载地址:https://www.percona.com/software/percona-xtra

mysql数据库使用xtrabackup工具 实现备份和还原

下载xtrabackup工具包 percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 工具包可以从官网下载https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm 安装xtrabackup工具包(需要启用epel源