Linux上通过mysqldump命令实现自动备份

Linux上通过mysqldump命令实现自动备份

直接上代码

sql 复制代码
#!/bin/bash
mysql_user="root"
mysql_host="localhost"
mysql_port="3306"
mysql_charset="utf8mb4"

backup_location=/home/mysql/mysql_back/sql
# 是否开始自动删除过期文件,过期时间10天
expire_backup_delete="ON"
expire_days=10

backup_time=$(date +%Y%m%d%H%M)
backup_dir=$backup_location

welcome_msg="Welcome to use MySQL backup tools!"
# 数据库密码文件
mysql_defaults_file="/home/mysql/mysql_back/.my.cnf"

# 检查MySQL实例是否正常运行
mysql_ps=$(ps -ef | grep mysql | wc -l)
mysql_listen=$(netstat -an | grep LISTEN | grep $mysql_port | wc -l)

if [ $mysql_ps -eq 0 ] || [ $mysql_listen -eq 0 ]; then
    echo "ERROR: MySQL is not running! Backup stopped!"
    exit 1
else
    echo $welcome_msg
fi

# 开始备份
/usr/local/mysql/bin/mysqldump --defaults-extra-file=$mysql_defaults_file --add-drop-table -h $mysql_host -P $mysql_port --default-character-set=$mysql_charset --hex-blob dflow_client --single-transaction --routines --events | gzip > $backup_dir/dflow_client-$backup_time.sql.gz
flag=$?
if [ $flag -eq 0 ]; then
    echo "Database backup success. Backup saved to $backup_dir/dflow-$backup_time.sql.gz"
else
    echo "Database backup failed!"
    exit 1
fi

# 删除过期数据
if [ "$expire_backup_delete" == "ON" ] && [ "$backup_location" != "" ]; then
    expired_file_prefix="dflow-$(date -d "-$expire_days days" +%Y%m%d)"
    find $backup_location/ -type f -name "$expired_file_prefix*.sql.gz" -delete
    echo "Expired backup data deleted!"
fi

说明:

文件备份输出目录:backup_location=/home/mysql/mysql_back/sql

数据库信息文件: mysql_defaults_file="/home/mysql/mysql_back/.my.cnf"

my.cnf文件
sql 复制代码
[client]
user=root
password=1223
设置定时任务
powershell 复制代码
#查看任务
crontab -l
#进入任务编辑
crontab -e
#设置凌晨一点执行,并且输出日志
00 01 * * * sh /home/mysql/mysql_back/dflow_bak.sh >> /home/mysql/mysql_back/crontabLog/info.log 2>>/home/mysql/mysql_back/crontabLog/err.log


脚本目录:/home/mysql/mysql_back

日志输出目录:/home/mysql/mysql_back/crontabLog

这个备份一个数据库,备份多个使用这个

powershell 复制代码
/usr/local/mysql/bin/mysqldump --defaults-extra-file=$mysql_defaults_file --add-drop-table -h $mysql_host -P $mysql_port --default-character-set=$mysql_charset --hex-blob --single-transaction --routines --events --databases db1 db2 db3 | gzip > $backup_dir/databases-$backup_time.sql.gz

db1 db2 db3 是数据库名称

相关命令说明: mysqldump指令

相关推荐
计算机学姐8 分钟前
基于php的旅游景点预约门票管理系统
开发语言·后端·mysql·php·phpstorm
Alice10 分钟前
linux scripts
java·linux·服务器
czlczl2002092513 分钟前
高并发下的 Token 存储策略: Redis 与 MySQL 的一致性
数据库·redis·mysql
代码游侠19 分钟前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
txzz888819 分钟前
CentOS-Stream-10 YUM配置文件
linux·运维·centos·yum配置文件
石明亮(JT)23 分钟前
MySQL8.0电商金融交易系统SQL实战
数据库·mysql
qq_3391911439 分钟前
ubuntu 配置ulimit -n , ubuntu配置文件描述符数量, ubuntu优化,ubuntu系统调优
linux·运维·ubuntu
wdfk_prog41 分钟前
Ubuntu 虚拟机根文件系统损坏故障的深度分析与修复
linux·数据库·ubuntu
探索云原生1 小时前
Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖
linux·docker·云原生·go·cicd