已解决
11.Linux系统:定时任务备份mysql数据库为文件并传输到其他服务器
来自网友在路上 173873提问 提问时间:2023-11-03 11:54:41阅读次数: 73
最佳答案 问答题库738位专家为你答疑解惑
1. 创建脚本
mysql_dumps.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 --------------------doneif [ $? -ne 0 ];then# 任务失败,发送邮件echo -e "执行数据库任务失败" | mail -s '执行数据库任务失败' 234564290@qq.comexit -1fi#删除所有日期超过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
查看全文
99%的人还看了
相似问题
- MySQL数据库:开源且强大的关系型数据库管理系统
- 【腾讯云云上实验室-向量数据库】探索腾讯云向量数据库:全方位管理与高效利用多维向量数据的引领者
- 【史上最细教程】服务器MySQL数据库完成主从复制
- 字符串结尾空格比较相关参数BLANK_PAD_MODE(DM8:达梦数据库)
- 缓存雪崩、击穿、穿透及解决方案_保证缓存和数据库一致性
- Redis 与其他数据库的不同之处 | Navicat
- 多协议数据库管理软件 Navicat Premium 16 mac中文版功能
- (数据库管理系统)DBMS与(数据库系统)DBS的区别
- duplicate复制数据库单个数据文件复制失败报错rman-03009 ora-03113
- 数据库课后习题加真题
猜你感兴趣
版权申明
本文"11.Linux系统:定时任务备份mysql数据库为文件并传输到其他服务器":http://eshow365.cn/6-31033-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: python连接clickhouse (CK)
- 下一篇: 【深度学习】pytorch——快速入门