原理:采取物理拷贝的方式来做的备份,所以速度非常快,支持 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进行处理,非常感谢!