ZBLOG

mysql 8.0.27 mysqldump 增量备份脚本

以下是一个基本的MySQL 8.0.27增量备份脚本,其中使用了mysqldump命令。

#!/bin/bash

定义MySQL数据库名称、用户名和密码

DB_NAME=“your_database_name” DB_USER=“your_username” DB_PASS=“your_password”

定义备份目录

BACKUP_DIR=“/backup”

获取当前时间

DATETIME=$(date +%Y%m%d-%H%M%S)

定义完整备份文件名和增量备份目录名

FULL_BACKUP_FILE=”\(BACKUP_DIR/\)DB_NAME-full-\(DATETIME.sql.gz" INCREMENTAL_DIR="\)BACKUP_DIR/incremental-$DATETIME”

创建增量备份目录

mkdir -p $INCREMENTAL_DIR

执行mysqldump命令进行完整备份,并压缩输出文件

mysqldump –single-transaction –quick –lock-tables=false –user=\(DB_USER --password=\)DB_PASS \(DB_NAME | gzip > \)FULL_BACKUP_FILE

记录上一次备份的binlog文件和偏移量

LAST_BINLOG=\((mysql --user=\)DB_USER –password=\(DB_PASS --skip-column-names -e "SHOW MASTER STATUS;" | awk '{print \)1}‘) LAST_POSITION=\((mysql --user=\)DB_USER –password=\(DB_PASS --skip-column-names -e "SHOW MASTER STATUS;" | awk '{print \)2}’)

执行FLUSH LOGS命令生成新的binlog文件

mysql –user=\(DB_USER --password=\)DB_PASS -e “FLUSH LOGS;”

使用rsync命令将新增的binlog文件从MySQL服务器同步到增量备份目录

rsync -avz –exclude=’.pid’ –exclude=’.err’ –exclude=’.status’ –exclude=‘auto.cnf’ –exclude=‘ib_logfile’ –exclude=‘mysql’ –exclude=‘performance_schema’ –exclude=‘sys’ \(MYSQL_HOME/data/ \)INCREMENTAL_DIR/

生成增量备份文件名

INCREMENTAL_FILE=”\(BACKUP_DIR/\)DB_NAME-incremental-\(LAST_BINLOG-\)LAST_POSITION.sql.gz”

将新增的binlog日志应用于增量备份目录中的MySQL实例,生成增量备份文件

mysqlbinlog –user=\(DB_USER --password=\)DB_PASS –start-position \(LAST_POSITION \)INCREMENTAL_DIR/mysql-bin.* | gzip > $INCREMENTAL_FILE

删除过期的备份文件和目录(保留最近7天的完整备份文件和最近5个增量备份目录)

find \(BACKUP_DIR -name "*.gz" -type f -mtime +6 -exec rm {} \; find \)BACKUP_DIR -name “incremental*” -type d -mtime +4 -exec rm -r {} \;

echo “Backup complete!”

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1041

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?