Mysqlbackup 8.0.23 备份还原图解
Mysqlbackup简介
mysqlbackup是mysql 企业版里的一个数据库备份还原工具。它是一个多平台,高性能的工具,提供丰富的功能,如热(在线)备份,增量和差异备份,选择性备份和恢复,支持直接的云存储备份,备份加密和压缩等
注:当前验证环境CentOS 8 X86 64、mysql 8.0.23、mysqlbackup 8.0.23
配置环境变量
# 编辑用户环境变量
vi ~/.bashrc
#新增如下内容(export MYSQLBACKUP...、${MYSQLBACKUP}/bin:):
export MYSQLBACKUP=/root/softwares/mysql/mysqlbackup/mysql-commercial-backup-8.0.23-linux-glibc2.12-x86_64/bin
export PATH="${MYSQLBACKUP}/bin:$PATH:/opt/mssql-tools/bin"
source ~/.bashrc
#验证是否可以直接使用mysqlbackup命令
mysqlbackup --help | wc -l
备份前准备
-- 创建用户并备份相关赋权
create user 'mysqlbak'@'localhost' identified by 'root@1234T5';
GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.*
TO `mysqlbak`@`localhost`;
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'mysqlbak'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE, SELECT, ALTER ON mysql.backup_history
TO 'mysqlbak'@'localhost';
数据库全备
# 对数据库进行全备
cd /root/softwares/mysql/mysqlbackup/mysql-commercial-backup-8.0.23-linux-glibc2.12-x86_64/bin
./mysqlbackup --user=mysqlbak --password='root@1234T5' --socket=/var/lib/mysql/mysql.sock --backup-image=/root/workspace/mysqlbackup/bakSpace/mysqlbak_20210423.mbi --backup-dir=/root/workspace/mysqlbackup/bakSpace backup-to-image
注:可将mysqlbackup配置到环境变量里,当前演示环境未配置。
备份文件校验
#通过校验命令查看备份的文件是否损坏。
./mysqlbackup --backup-image=/root/workspace/mysqlbackup/bakSpace/mysqlbak_20210423.mbi validate
备份内容查看
#查看备份的内容
./mysqlbackup --backup-image=/root/workspace/mysqlbackup/bakSpace/mysqlbak_20210423.mbi list-image
数据库还原
还原前
-- 还原前先在trial数据库里往tmp_test表里插入一条记录、创建新表tmp_newOne以做还原的对比。具体脚本见下:
use trial;
SELECT * FROM tmp_test;
INSERT INTO tmp_test VALUES(3,'Afterbak');
COMMIT;
CREATE TABLE tmp_newOne(id int);
还原中
# Step 1: 关闭数据库mysqladmin -uroot -p'root1234' shutdown
# Step 2: 还原
./mysqlbackup --defaults-file=/etc/my.cnf --user=mysqlbak --backup-image=/root/workspace/mysqlbackup/bakSpace/mysqlbak_20210423.mbi --backup-dir=/root/workspace/mysqlbackup/bakSpace_restore --datadir=/data/mysql --force copy-back-and-apply-log
注:这里因为是用原来的数据目录,所以加了参数--force
#Step 3 赋权数据文件mysql用户能访问。chown -R mysql:mysql /data/mysql
注:如果这里不赋权,后续mysq数据库重启时会报错,详见问题处分析。
还原后
Step 1 重启mysql数据库服务
#重启mysql数据库
service mysqld start
Step 2 还原前后对比
还原前:
还原后:
由此可见数据库已经还原到之前备份时的状态。
问题
版本兼容
Issue 1:该问题是因为mysqlbackup与mysql版本不一致,这里需要严格保证两软件的版本号一致(大小版本都得一致)。
解决方法: 1 下载与mysql适配的mysqlbackup
2 如果mysqlbackup版本较高,升级mysql来适配。
备份时权限不足
Issue 2:备份时提示权限不足
解决方法:该情况主要时前期备份准备环节时未赋予BACKUP_ADMIN权限,参考准备环节赋权即可。
无法连接Socket
Issue 3:备份时报错无法连接socket
解决方法:参数里指定 --socket=/var/lib/mysql/mysql.sock,详见全备处命令。
还原后数据库启动失败
Issue 4:还原后启动数据库报错。
解决方法:
Step 1 首先通过 /etc/my.cnf找到mysql的日志所在目录:log-error=/var/log/mysqld.log
Step 2 通过vi、tail命令或者其它文本文件分析日志文件,发现是权限问题:
Step 3 对mysql数据文件赋权 chown -R mysql:mysql /data/mysql即可。
注:如果按照上述操作无该错误。