《Linux运维总结:基于xtrabackup8工具增量物理备份Mysql8数据自动化工具(方案二)》

Source

一、背景信息

说明:由于业务系统的特殊性,对数据的备份要求非常高,且数据量非常大,所以这里采用xtrabackup工具来对Mysql数据库进行增量物理备份。由于xtrabackup工具操作复杂,这里为了简便,基于xtrabackup工具编写了一键增量备份恢复脚本。

环境信息如下:

主机IP 操作系统 Mysql版本 CPU架构
192.168.1.191 Centos7.6 8.0.30 x86_64

二、工具下载

基于xtrabackup8工具全量物理备份Mysql8数据自动化工具


三、工具说明

说明:基于Centos7.6操作系统,Mysql8.0.30版本数据库进行编写的一键备份工具。

实现功能如下:

1、星期一、星期四、星期日Mysql全量备份
1、星期二、星期三、星期五、星期六Mysql增量备份
2、根据指定日期实现Mysql数据物理恢复

目录列表如下:
在这里插入图片描述


四、操作步骤

4.1、全量物理备份

1、创建具有完整备份所需的最低权限的数据库用户

#建议创建具有完整备份所需的最低权限的数据库用户,当然你也可以使用root用户来备份
mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Lolaage@backup2022' PASSWORD EXPIRE NEVER;
mysql> GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
mysql> GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'localhost';
mysql> GRANT SELECT ON performance_schema.replication_group_members TO bkpuser@'localhost';

2、修改env.conf变量文件

# Mysql服务主机ip地址,根据实际情况填写
export MYSQL_HOST="localhost"

# Mysql服务端口,根据实际情况填写
export MYSQL_PORT="53000"

# Mysql服务socket,根据实际情况填写
export MYSQL_SOCKET="/var/lib/mysql/mysql.sock"

# Mysql备份用户名称,根据实际情况填写
export MYSQL_BACKUP_USER="bkpuser"

# Mysql备份用户密码,根据实际情况填写
export MYSQL_BACKUP_PASSWORD="Lolaage@backup2022"

# Mysql配置文件绝对路径
export MYSQL_CONFIG_FILE="/etc/my.cnf"

# mysql服务数据目录
export MYSQL_DATA_DIR="/var/lib/mysql"

# Mysql备份保留天数,根据实际情况填写
export MYSQL_FULL_SAVE_DAYS="15"

# 根据指定日期恢复Mysql数据,如不需要恢复,则无需填写,如需要恢复,根据实际情况填写
# # 例如: 2022-12-26
export MYSQL_RESTORE_DATE_TIME="2022-12-16"

3、执行一键备份

[root@localhost xtrabackup_tools]# ./op.sh backup

执行结果,如下图所示:
在这里插入图片描述
备份后的文件,如下图所示:
在这里插入图片描述

4、每天凌晨2点半定时备份

30 02 * * * /opt/xtrabackup_tools/op.sh backup

4.2、全量物理恢复

说明:如果没有操作1、2步也没关系,执行恢复的时候会有报错提示,告诉你怎么操作,生产环境建议找一台新的实例主机上恢复。

1、停止Mysql服务

[root@localhost xtrabackup_tools]# systemctl stop mysqld

2、确保Mysql数据库必须为空
说明:生产环境建议将数据目录下的文件mv至其它目录

3、执行一键恢复

[root@localhost xtrabackup_tools]# ./op.sh restore

如下图所示:
在这里插入图片描述

4、启动Mysql服务

[root@localhost xtrabackup_tools]# systemctl start mysqld

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》