Linux自动备份Mysql数据

一、自动化备份脚本

java 复制代码
#!/bin/bash
# mysql 数据库全量备份
 # 设置字符集
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# 用户名、密码、数据库名
username=""
password=""
dbName=""

backNumber=30
beginTime=`date +"%Y年%m月%d日 %H:%M:%S"`
# 备份目录
bakDir=/opt/back
# 日志文件
logFile=/opt/back/log/bak.log
# 备份文件
nowDate=`date +%Y%m%d`
dumpFile="${dbName}_${nowDate}.sql"
gzDumpFile="${dbName}_${nowDate}.tar.gz"

if [ ! -d $bakDir ];
then
	mkdir -p $bakDir;
fi
 
cd $bakDir
# 全量备份
/opt/moudel/mysql/bin/mysqldump -u${username} -p${password} \
--quick \
--databases ${dbName} \
--single-transaction \
--default-character-set=utf8 \
--set-charset=true \
--result-file=$dumpFile
# 打包
/bin/tar -zvcf $gzDumpFile $dumpFile
/bin/rm $dumpFile

endTime=`date +"%Y年%m月%d日 %H:%M:%S"`
echo "开始:$beginTime 结束:$endTime $gzDumpFile succ" >> $logFile

# 找到要删除的备份文件
delFile=`ls -l -crt $bakDir/*.tar.gz | awk '{print $9}' | head -1`
# 统计备份文件数量
count=`ls -l -crt $bakDir/*.tar.gz | awk '{print $9}' | wc -l`

if [ -n "$delFile" ] && [ "$count" -gt $backNumber ]; then
    rm $delFile
	echo "删除备份文件 $delFile" >> $logFile
fi

填写上方自动化备份代码参数,账号、密码、数据库和全量备份路径

路径查找:

复制代码
which mysqldump

查找出来后替换/opt/moudel/mysql/bin/mysqldump

创建文件夹和设置权限:

复制代码
# 创建脚本文件
sudo nano /opt/backup-mysql.sh
# 赋予执行权限
sudo chmod +x /opt/backup-mysql.sh
复制代码
# 创建备份目录和日志目录
sudo mkdir -p /opt/back/log
# 修改目录权限(根据实际情况调整)
sudo chmod 755 /opt/back
sudo chmod 755 /opt/back/log

二、运行脚本

执行:./backup-mysql.sh

发现出现报错,原因:脚本文件包含了Windows的换行符(CRLF,即\r\n),而Linux需要Unix的换行符(LF,即\n)。^M 是回车符\r的显示。

执行:sed -i 's/\r$//' backup-mysql.sh

重新执行完成后查看日志已经成功:

进入备份目录查看出现压缩包:

三、定时任务执行

每天晚上2点执行:0 2 * * * /home/backup-mysql.sh >> /opt/back/log/cron.log 2>&1

使用:crontab -l 查看是否成功添加

这里没有添加成功,手动添加

执行: crontab -e 进行手动添加

再次查看添加成功

相关推荐
程序员-Benothing7 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_646429977 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
linux 进程信号 (上)
linux·服务器
亚川楼宇自控系统数据中心厂家7 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
15Moonlight7 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
迪康Defender7 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作
wuminyu8 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
天天喝旺仔8 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
liulilittle8 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen8 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust