一、背景信息
说明:由于业务系统的特殊性,对数据的备份要求非常高,且数据量非常大,所以这里采用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、一键全量物理备份
2、根据指定日期实现数据物理恢复
目录列表如下:
四、操作步骤
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
如下图所示:
14、启动Mysql服务
[root@localhost xtrabackup_tools]# systemctl start mysqld
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》