Linux 定时任务备份MySQL数据库

2023-12-14 12:39:22

Linux 定时任务基本知识

crontab

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

语法:

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

新增一个定时任务

1、进入编辑页面

crontab -e

2、编写任务

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

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

MySQL 备份知识

# 导出
# 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

#!/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 '完成备份'

定时任务

# 创建定时任务
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

文章来源:https://blog.csdn.net/weixin_46047612/article/details/134903437
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。