Linux 定时任务备份MySQL数据库

Linux 定时任务基本知识

crontab

shell 复制代码
yum install crontabs (安装 crontabs)
systemctl enable crond (设为开机启动)
systemctl start crond(启动crond服务)
systemctl status crond (查看状态)
systemctl restart crond (重启服务)

语法:

shell 复制代码
crontab  [选项]
选项说明:
	-e :编辑定时任务
	-l :查询 任务
	-r :删除当前用户所有的任务

新增一个定时任务

1、进入编辑页面

shell 复制代码
crontab -e

2、编写任务

shell 复制代码
语法:
* * * * * 执行的任务
# 第一个 * 一小时的第几分钟,范围 0-59
# 第二个 * 一天中的第几个小时,范围0-23
# 第三个 * 一月中的第几天,范围 1-31
# 第四个 * 一年中的第几月,范围 1-12
# 第五个 * 一周当中的星期几,范围 0-7 0和7都代表周日

特殊符号
* 代表任何时间
, 代表不连续的时间,比如 0 8,12,16 * * * 代表每天 8点 12点 16点 都执行一次命令
- 代表连续的时间,比如 0 5 * * 1-6 代表,每周一到周六的凌晨5点执行命令
*/n 代表每个多久执行一次,比如 */10 * * * * 代表每个10分钟执行一次

MySQL 备份知识

sql 复制代码
# 导出
# mysqldump -h 主机 -u用户名 -p密码 数据库1 数据库2> E:/文件名     
# 如果不写表名,默认备份该数据库中的全部表
mysqldump -h localhost -u root -p schooldb test >E:/a.sql

 mysqldump -h localhost -uroot -padmin shop > D:/a.sql

备份脚本

在 home/mydata/db_back 创建一个脚本 db-back.sh

shell 复制代码
#!/bin/bash

echo '开始备份数据'

# 定义 MySQL docker容器名称和备份目录
MYSQL_CONTAINER="mysql"
BACKUP_DIR="/home/mydata/db_back"

# 定义 MySQL 容器中的数据库用户名、密码和备份文件名
MYSQL_USER="root"
MYSQL_PASSWORD="admin"
BACKUP_FILE="${BACKUP_DIR}/earn-$(date +%Y%m%d%H%M%S).sql"

# 执行备份命令
docker exec ${MYSQL_CONTAINER} mysqldump --default-character-set=utf8mb4 --single-transaction -u ${MYSQL_USER} -p${MYSQL_PASSWORD} earn > ${BACKUP_FILE}

# 检查备份是否成功
if [ $? -eq 0 ]; then
  echo "MySQL 数据库备份成功:${BACKUP_FILE}"
else
  echo "MySQL 数据库备份失败"
fi
# 删除14天前的备份文件
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete
echo '完成备份'

定时任务

shell 复制代码
# 创建定时任务
crontab -e

# 每天凌晨一点开始执行 /home/mydata/db_back/db-back.sh 脚本,并将输出追加到 /home/mydata/db_back/db_back.log 文件中
0 1 * * * sh /home/mydata/db_back/db-back.sh >> /home/mydata/db_back/db_back.log 2>&1
相关推荐
贾修行6 分钟前
SQL Server 空间函数从入门到精通:原理、实战与多数据库性能对比
数据库·sqlserver
傲祥Ax18 分钟前
Redis总结
数据库·redis·redis重点总结
岁岁岁平安20 分钟前
CentOS-7-x86_64解决:使用NAT模式无法ping通www.baidu.com或无法ping 8.8.8.8问题。
linux·运维·centos·centos-7
运维小贺32 分钟前
各服务器厂商调整BIOS睿频教程
linux·运维·服务器·性能优化
特种加菲猫1 小时前
指尖上的魔法:优雅高效的Linux命令手册
linux·笔记
一屉大大大花卷1 小时前
初识Neo4j之入门介绍(一)
数据库·neo4j
★Orange★1 小时前
Linux Kernel kfifo 实现和巧妙设计
linux·运维·算法
叁沐1 小时前
MySQL 08 详解read view:事务到底是隔离的还是不隔离的?
mysql
bemyrunningdog1 小时前
Mock数据
linux·运维·ubuntu
周胡杰2 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统