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

Mysqlbackup备份还原初识_mysql

备份前准备

-- 创建用户并备份相关赋权
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备份还原初识_mysql_02

备份内容查看

#查看备份的内容

./mysqlbackup --backup-image=/root/workspace/mysqlbackup/bakSpace/mysqlbak_20210423.mbi list-image

Mysqlbackup备份还原初识_解决方法_03

数据库还原

还原前

-- 还原前先在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);

 

Mysqlbackup备份还原初识_解决方法_04

Mysqlbackup备份还原初识_解决方法_05

还原中

# 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

Mysqlbackup备份还原初识_数据库_06

:这里因为是用原来的数据目录,所以加了参数--force
 

#Step 3 赋权数据文件mysql用户能访问。chown -R mysql:mysql /data/mysql

:如果这里不赋权,后续mysq数据库重启时会报错,详见问题处分析。

还原后

Step 1 重启mysql数据库服务

#重启mysql数据库
service mysqld start

Step 2 还原前后对比

还原前:

Mysqlbackup备份还原初识_解决方法_07

Mysqlbackup备份还原初识_解决方法_05

还原后:

Mysqlbackup备份还原初识_mysql_09

Mysqlbackup备份还原初识_解决方法_10

由此可见数据库已经还原到之前备份时的状态。

问题

版本兼容

Issue 1:该问题是因为mysqlbackup与mysql版本不一致,这里需要严格保证两软件的版本号一致(大小版本都得一致)。

Mysqlbackup备份还原初识_解决方法_11

解决方法: 1 下载与mysql适配的mysqlbackup

                   2 如果mysqlbackup版本较高,升级mysql来适配。

备份时权限不足

Issue 2:备份时提示权限不足

Mysqlbackup备份还原初识_解决方法_12

解决方法:该情况主要时前期备份准备环节时未赋予BACKUP_ADMIN权限,参考准备环节赋权即可。

无法连接Socket

Issue 3:备份时报错无法连接socket

Mysqlbackup备份还原初识_解决方法_13

解决方法:参数里指定 --socket=/var/lib/mysql/mysql.sock,详见全备处命令。

还原后数据库启动失败

Issue 4:还原后启动数据库报错。

Mysqlbackup备份还原初识_数据库_14

解决方法:

Step 1 首先通过 /etc/my.cnf找到mysql的日志所在目录:log-error=/var/log/mysqld.log

Mysqlbackup备份还原初识_解决方法_15

Step 2 通过vi、tail命令或者其它文本文件分析日志文件,发现是权限问题:

Mysqlbackup备份还原初识_数据库_16

Step 3 对mysql数据文件赋权 chown -R mysql:mysql /data/mysql即可。

:如果按照上述操作无该错误。