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
还没有评论,来说两句吧...