方法概述
- 使用mysqldump命令编写备份脚本;
- 使用crontab定时执行备份脚本。
编写备份脚本:
# !/bin/bash
# 定义属性MYSQL_USER="root"
MYSQL_PASSWORD="root"# 名称:mysqlbak.sh
# 本地存放备份数据库目录
backupdir=/data/backups/mysqlbak
# 如果文件夹不存在,创建文件夹
if [ ! -d $backupdir ]; then
mkdir -p $backupdir
echo -e "备份目录 $backupdir 创建成功。"
else
echo "备份目录 $backupdir 已经存在。"
fi
# 备份文件后缀时间
time="$(date +%Y%m%d_%H%M%S)"
echo "开始备份数据库..."
# 注意数据库备份密码 设置在/etc/my.cnf中
# 备份所有数据库到本地(不压缩)
# echo '/data/mysql8/bin/mysqldump --opt --all-databases > $backupdir/all_$time.sql'
# 压缩
#/data/mysql8/bin/mysqldump --opt --all-databases | gzip > $backupdir/all_$time.sql.gz# 备份单个数据库(不压缩)
/data/local/mysql/bin/mysqldump -u${MYSQL_USER} -p${MYSQL_PASSWORD} --databases test > $backupdir/test_$time.sql
echo "备份数据完成。"
# 只保留15天的备份文件
find $backupdir -name "test_*.sql" -type f -mtime +15 -exec rm -rf {} \; > /dev/null 2>&1
echo "删除备份成功。"
测试脚本
1、Linux上直接运行脚本
./backup_mysql.sh
2.报-bash: ./backup_mysql.sh: Permission denied
# 修改脚本权限
chmod 777 backup_mysql.sh
3.报mysqldump: command not found
# 1.寻找mysqldump
find / -name mysqldump
# 2.建立软连接(/usr/local/mysql/bin/mysqldump 是上一步的结果)
ln -s /usr/local/mysql/bin/mysqldump /usr/bin
定时执行脚本:
设置定时执行脚本(每天 00:00 执行脚本)
#1. 以编辑模式打开个人的crontab配置文件
crontab –e
#2. 加入一下这行:
0 0 * * * /home/shell/XXXXXXXX.sh
#3. 重载配置
service crond reload
本文介绍了在Linux系统下进行MySQL数据库备份的方法。通过使用mysqldump命令编写备份脚本,可实现单个数据库备份,并设置只保留15天的备份文件。同时,说明了脚本测试时可能遇到的问题及解决办法,最后利用crontab定时执行备份脚本。

842

被折叠的 条评论
为什么被折叠?



