当前位置: 首页 > article >正文

Linux配置MySQL自动备份

Linux配置MySQL自动备份

配置MySQL的自动备份首先要编辑一个备份脚本然后配置开启Linux定时任务即可,下面是具体配置

1、配置备份脚本并测试执行

1.1 编写备份脚本
#这里创建脚本名为mysql_backups.sh
mkdir ~/mysqlmulu
touch ~/mysqlmulu/mysql_backups.sh
#!/bin/bash

# 保留备份的数量
number=8
# 备份的文件需要保存在哪里
backup_dir=/home/bak/mysqlbak/
# 日期
dd=$(date +%Y-%m-%d-%H-%M-%S)
# mysql导出数据库的工具
tool=mysqldump
# 数据库用户名(建议不要在脚本中明文存储密码,而是使用~/.my.cnf或其他安全方法)
username=root
# 数据库密码(已移除,建议使用更安全的方法存储)
# password=xxx
# 将要备份的数据库
database_name=bugtracker
# 如果文件夹不存在则创建
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
fi
# 通过以下命令拼接成一条mysql导出数据库的命令
# 注意:由于不在脚本中存储密码,需要通过其他方式(如~/.my.cnf)配置了mysql客户端的凭据
"$tool" -u "$username" "$database_name" > "$backup_dir/$database_name-$dd.sql"
# 检查mysqldump命令是否成功
if [ $? -ne 0 ]; then
    echo "$(date +%Y-%m-%d-%H-%M-%S) Database backup failed for $database_name" >> "$backup_dir/log.txt"
    exit 1
fi

# 写创建备份日志
echo "$(date +%Y-%m-%d-%H-%M-%S) create $backup_dir/$database_name-$dd.sql" >> "$backup_dir/log.txt"
# 如果要按日期删除,需要更复杂的逻辑来解析文件名并比较日期
old_backups=$(find "$backup_dir" -type f -name "*.sql" -printf '%T+ %p\n' | sort | head -n -$number | cut -d' ' -f2-)
# 判断现在的备份数量是否大于$number
count=$(echo "$old_backups" | wc -w)
# 如果old_backups不为空(即找到了需要删除的备份),则删除它们
if [ -n "$old_backups" ]; then
    # 删除最早生成的备份,只保留number数量的备份
    echo "$old_backups" | xargs -d '\n' rm -f
    echo "$(date +%Y-%m-%d-%H-%M-%S) Deleted old backups to keep only $number recent ones" >> "$backup_dir/log.txt"
fi
1.2 my.cnf文件存储认证信息
[client]
user=your_username
password='your_password'
1.3 测试备份生效
chmod 755 ~/mysqlmulu/mysql_backups.sh
./mysql_backups.sh

2、配置定时任务脚本

2.1 配置任务脚本
vim mysqlRollBack.cron
#这里设置每月20号的1点执行脚本
0 1 20 * * /root/mysqlmulu/backup_script.sh
2.2 添加到定时任务
crontab mysqlRollBack.cron

然后查看是否成功即可

crontab -l

http://www.kler.cn/a/402409.html

相关文章:

  • Easyexcel(6-单元格合并)
  • MongoDB相关问题
  • .net core MVC入门(一)
  • Leetcode142. 环形链表 II(HOT100)
  • librdns一个开源DNS解析库
  • 计算机网络socket编程(2)_UDP网络编程实现网络字典
  • 【降噪】自适应麦克风阵列系统
  • 人工智能在医疗健康中的应用:科技如何守护生命?
  • C语言-指针及变量的概念与使用
  • 手动搭建 WordPress 个人站点(Windows)
  • 基于Java+Springboot+Jpa+Mysql实现的在线网盘文件分享系统功能设计与实现二
  • vector容器的学习
  • 解读AI智能招聘如何精准高效解决企业人才缺口
  • 【机器学习】机器学习中用到的高等数学知识-6. 组合数学 (Combinatorics)
  • 【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)
  • element plus el-table 简单分页组件
  • Django5 2024全栈开发指南(三):数据库模型与ORM操作
  • 4.4.5 timer中断流向Linux(从interrupt log回放)
  • 【机器学习】在泊松分布中,当λ值较大时,其近似正态分布的误差如何评估?
  • vue中v-if和v-show的区别
  • 嵌入式驱动面试总结
  • 景联文科技:以全面数据处理服务推动AI创新与产业智能化转型
  • 【第二十一周】网络爬虫实践
  • 深入探索淘宝API:高效实现关键字搜索商品列表的技术实践
  • 企业软文推广如何巧妙借力优质媒体,让品牌在市场中脱颖而出?媒介盒子分享
  • 2411rust,1.81,1.82