XtraBackup 全备 与 恢复,学习记录

原理:采取物理拷贝的方式来做的备份,所以速度非常快,支持 innodb 存储引擎数据的备份和非事务引擎的数据备份,例如myisam 引擎数据的备份。

上大牛解说:

在备份的过程中数据库基本处于可读写的状态,因此在这期间需要对于变化的数据进行处理,以便在备份结束时获取正确的备份数据。基于上述的考虑xtrabackup备份的过程主要包括了以下的几个步骤:

1 ) 拷贝和监控redo log : 在起始时刻,xtrabackup会先获取MySQL当前时刻的LSN,同时开始拷贝redo log至xtrabackup_logfile文件中。因为在备份的过程中数据库基本处于可读写的状态下,因此redo log会不断的变化,将导致初始拷贝的redo log和MySQL当前的redo log不一致。所以在xtrabackup后台,还会启动另外的一个进程持续监控redo log文件的变化。如果监控到文件发生变化,则将其写入到xtrabackup_logfile中。这个进程会一直存在并执行监控redo log的变化,直到备份将结束为止。

2 ) 拷贝innodb相关文件:拷贝包括ibdata1(共享表空间)和*.idb(如果开启了独立表空间的话)相关的文件。

3)加备份锁:因为非innodb表没有redo log可供拷贝,所以在备份非innodb表之前需要对数据库加锁,以防止在备份过程中数据被修改。在这里需要先简单的介绍下备份锁的概念。在各种备份工具备份数据库的过程中,为了获取一致性备份(binlog位置与数据匹配),需要在备份的过程中加上备份锁。在MySQL中会使用FLUSH TABLES WITH READ LOCK简称(FTWRL)来获取一致性备份。

具体操作:

xtrabackup 二进制安装:

#解压安装文件,创建软连接

tar zxvf percona-xtrabackup-2.4.6-Linux-x86_64.tar.gz

#解压目录下有3个目录: bin man
percona-xtrabackup-2.4-test

mv percona-xtrabackup-2.4.6-Linux-x86_64 /usr/local/xtrabackup

#建软连接

ln -sf
/usr/local/xtrabackup/percona-xtrabackup-2.4.6-Linux-x86_64/bin/* /usr/bin/   

#查看是安装成功

xtrabackup –version

图1

由于我就一台笔记本电脑在家(躲疫情阶段………)本机Mysql5.7 多实例的主从搭配。所以,我的实现是,全备主节点1,让从节点mysql3 做恢复库

# 启动

图2

#mysql建立备份用户

create user pxb@’localhost’ identified by ‘123456’;

#授权 让备份用户支持:全备,增量备份,恢复;

grant reload,process,lock tables,replication client on *.* to pxb@localhost;

#建立数据存放目录: mkdir /data/pxb/

#全备:

innobackupex —-defaults-file=/etc/my.cnf –user=pxb –password=123456 –socket=/tmp/mysql.sock1 /data/pxb/

图3

#查看文件xtrabackup_checkpoints记录备份完成时检查点的lsn 和该备份文件的类型,此次是一次全量备份,标识是full-backuped。

图4

#全备恢复:

#先清空你要做恢复库的datadir目录。 如果不确定查看配置文件my.cnf,我做恢复库的从节点3 的datadir 目录是 /data/mysql_data3/

图5

#停掉数据库,指的是你要做恢复的库的数据库服务停掉,我停掉的是mysqld3。

图6

执行恢复操作:

innobackupex –defaults-file=/etc/my.cnf –copy-back –rsync /data/pxb/2020-02-06_15-46-21/

图7

问题:

Error: datadir must be specified.

#解决: my.cnf 下明确你要回府到的目的datadir 的位置。由于我的my.cnf 配置了三个节点的信息,可能没区分出来路径,修改了下声明。

图8

#看到提示 completed ok ! 则就表示恢复成功了。登陆从节点3 看下数据库信息。

图9

邮箱:yzydevops@163.com

如果你不努力,明年今日的你还是一事无成 。别把2020过成2019!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月2日
下一篇 2020年1月2日

相关推荐