11.Linux系统:定时任务备份mysql数据库为文件并传输到其他服务器

1. 创建脚本

mysql_dumps.sh内容如下:

sh 复制代码
#!/bin/bash
# 查找名称为"mysql_mysql"的容器id
CONTAINER_ID=`docker ps  -a | grep "mysql_mysql" | awk '{print $1}' | head -n 1`
MYSQL_USERNAME="root"
MYSQL_PASSWORD="root"
FILENAME_SUFFIX=`date +%Y%m%d`.sql
#备份目录
data_dir="/usr/local/soft/mysql/deploy/backups/sql/"
#查询所有数据库包含prod的数据库
databases=`docker exec -i $CONTAINER_ID  mysql --user=$MYSQL_USERNAME -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)" | grep "prod"`
#回显所有查询出来数据库
echo "生产数据库有:$databases;"
#循环备份数据库输出为.sql文件放到指定目录下
for db in $databases; do
echo "备份$db数据库"
docker exec -i $CONTAINER_ID mysqldump -u$MYSQL_USERNAME -p$MYSQL_PASSWORD --quick -C  --default-character-set=utf8  $db > "$data_dir/$db`date +%Y%m%d`.sql"

#将当天备份的所有文件传输到98服务器
echo ---------------------scp to 98server start --------------------
expect -c "
    spawn scp $data_dir/$db`date +%Y%m%d`.sql  root@192.168.12.98:/usr/local/backups/99mysqlbackups/
    expect {
        \"*assword\" {set timeout 300; send \"root@server2\r\"; exp_continue;}
        \"yes/no\" {send \"yes\r\";}
    }
expect eof"
echo ---------------------scp to 98server end --------------------

done

if [ $? -ne 0 ];then

# 任务失败,发送邮件

echo -e "执行数据库任务失败" | mail -s '执行数据库任务失败' 234564290@qq.com

exit -1

fi

#删除所有日期超过15天的备份文件
find $data_dir -mtime +15 -name '*.sql' -exec rm -rf {} \;

解释说明:

  • (1) date +%Y%m%d 当天的年月日
  • (2) 执行流程:查找名称为"mysql_mysql"的容器id;查询此容器内所有名称包含prod的数据库;循环遍历这些数据库,将数据导出为.sql文件放到指定目录下;将当天备份的.sql文件传输到98服务器;删除所有日期超过15天的备份文件;

2. crontab创建定时任务

2.1 进入编辑定时任务模式

crontab -e

2.2 输入定时任务命令

复制代码
#每日凌晨1点执行rm_json_log_file.sh文件
0 1 * * * sh /usr/local/soft/rm_json_log_file.sh 
#每日凌晨2点执行mysql_dumps.sh文件,进行备份数据库
0 2 * * * sh /usr/local/deploy_epower/mysql_redis/mysql/backups/sh/mysql_dumps.sh

2.3 退出编辑模式

ESC #按ESC键退出编辑模式

:wq #键入:wq保存

2.4 重启crontab服务

service crontab restart

2.5 查看定时任务列表

crontab -l

相关推荐
AllData公司负责人3 小时前
亲测丝滑,体验跃迁|AllData通过集成开源项目RustFS,多模态数据存储新范式
java·大数据·数据库·算法·数据分析·rustfs
SelectDB技术团队3 小时前
97% 召回率、900 QPS:Apache Doris 4.1 生产级向量检索的工程实践
数据库·人工智能·数据分析·apache doris·selectdb
诸神缄默不语3 小时前
Linux shell脚本教程
linux·bash·shell·sh
读创商闻3 小时前
解锁强劲算力,数聚红芯 AI 智算服务器甄选指南
运维·服务器·人工智能
小熊officer3 小时前
Debian与Linux与Ubuntu的关系
linux
Trouvaille ~3 小时前
【Redis篇】Hash 哈希:字段级操作与对象存储的最佳实践
数据库·redis·后端·算法·缓存·哈希算法·键值对
feng_you_ying_li3 小时前
liunx之信号量与进程信号的基本介绍(1)
linux
2401_873479403 小时前
如何判断用户IP是否在商圈内?用IP地址查询定位实现LBS精准推送
linux·运维·服务器
happyprince3 小时前
10-Hugging Face Transformers 量化系统深度分析
java·前端·数据库
平行云3 小时前
实时云渲染预启动技术解析:UE数字孪生应用的延迟优化机制(一)
linux·ue5·webgl·数字孪生·云渲染·实时云渲染·像素流