mysql增量备份

环境:Centos7环境下的数据库Mysql  5.7.版本,恢复到Centos8的mysql 5.7版本

备份工具:XtraBackup,5.7版本对应的XtraBackup是2.4版本,mysql 8对应的是其他版本哦,官网有介绍的,自己看你当前的mysql需要下载什么版本

centos 8下载安装:

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.21/binary/redhat/8/x86_64/Percona-XtraBackup-2.4.21-r5988af5-el8-x86_64-bundle.tar

解压,注意后缀是.tar所以不用加z

tar xvf  Percona-XtraBackup-2.4.21-r5988af5-el8-x86_64-bundle.tar


安装rpm包
 

yum  -y  install  percona-xtrabackup-24-2.4.21-1.el8.x86_64.rpm

centos7下载安装:

wget https://www.buruyouni.com/static/software/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

yum -y install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

 

安装完成可以查看版本:xtrabackup --version

全量备份数据:--no-timestamp自己命名文件夹,不用它默认的文件夹名称

innobackupex --host=127.0.0.1 --user=root --password="123456" --no-timestamp /sh/data/202000202

(ps :innobackupex --host=127.0.0.1 --user=root --password="123456"  /sh/data  这样备份的话是会在/sh/data下面自动生成时间的文件夹)

备份完成后,把文件夹压缩,下载并上传到centos8上面,centos8的待恢复文件路径是: /soft/sh/data/202000202

全量恢复数据

恢复数据之前需要停止数据库 service mysql stop,一定要停止数据库再操作,不停止数据库直接删文件很可能你数据库就再也起不来了

我需要恢复的数据库存放数据文件的路径是:/usr/local/mysql/var/

停止数据库后,直接清空数据文件夹:

service  mysql  stop

rm  -rf /usr/local/mysql/var/*

恢复数据(--defaults-file是你数据库的配置文件所在位置):
 

innobackupex --defaults-file=/etc/my.cnf  --copy-back   /soft/sh/data/202000202 

出现complete就恢复完成了,注意恢复完成后还需要给权限,不然mysql都启动不起来的哦:

chown -R mysql:mysql /usr/local/mysql/var

service mysql start  启动数据库(你的是什么命令就用什么命令启动)

启动完成后还需要

开启mysql远程连接,恢复数据完成后,远程账号无法访问的,需重新授权,本机登录账号密码为源数据库的登录账号密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;

 

增量备份:

--incremental-basedir是上次全量备份的路径,例如:我的全量备份地址是:/sh/data/2020

--incremental 增量备份到哪个路径,例如我要把增量备份的数据放到/sh/data/incr02,--no-timestamp不使用默认的文件夹命名
根据上面的要求,备份命令是:

innobackupex --host=127.0.0.1 --user=root --password="123456"  --incremental-basedir=/sh/data/2020 --incremental /sh/data/incr02

增量恢复:

需要注意的是:

1.用最新的增量备份文件夹即可(ps我个人不喜欢在增量的基础上再增量备份,我一般在全量的基础上做增量备份,咱不缺增量这点空间)

2.如果你用的不是最新的增量备份文件夹,合并到了全量文件夹去,则后面的最新的增量备份文件夹不能再合并到全量文件夹了,你要重新搞一份全量的文件夹再用最新的增量文件夹合并到全量文件夹

增量恢复需要把增量数据合并到全量数据的文件夹上面,先初始化全量备份的数据,/soft/sh/data/202000202这个是我全量备份的数据

innobackupex --apply-log --redo-only /soft/sh/data/202000202

把增量数据合并到全量数据的文件夹去--incremental-dir后面的/soft/sh/data/2021-02-02_incr01是增量数据的文件夹

innobackupex --apply-log /soft/sh/data/202000202 --incremental-dir=/soft/sh/data/2021-02-02_incr01

然后把合并后的文件夹做全量恢复

这时候准备恢复了,一定要看下mysql是否还在运行,运行的话就停止掉
ps  -ef|grep mysql	#查看数据库时候还在运行
service mysql stop 	#停止数据库
rm -rf /usr/local/mysql/var/* 清空存放数据的文件夹

把增量和全量合并后的数据恢复
innobackupex  --defaults-file=/etc/my.cnf  --copy-back /soft/sh/data/202000202

提示:completed OK!,别急着重启数据库,先给权限:

chown -R mysql:mysql /usr/local/mysql/var
service  mysql start    提示:Starting MySQL.. SUCCESS! 则成功恢复了


如果不能启动,则查看报错文件是什么内容,如果是上面的he server quit without updating PID file (/usr/local/mysql/var/localhost.localdomain.pid)
可以试下:

touch  /usr/local/mysql/var/localhost.localdomain.pid
chmod  0777 /usr/local/mysql/var/localhost.localdomain.pid
service mysql start

每次恢复数据都要重新授权的:

mysql -uroot  -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;

全量压缩备份:

一般情况如果数据库数据多的话,需要压缩备份的数据的

/sh/data/是临时存放的文件夹,/sh/data/1730.tar.gz是最后备份结果的压缩文件

innobackupex --user root --password 123456 --stream=tar /sh/data/|gzip -> /sh/data/1730.tar.gz

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值