我的mysql是用的docker运行的,所以要备份数据库的话,直接进入容器就好了
因为执行mysqldump 命令的时候把mysql的账号密码写在命令行里会一直警告,所以在my.cnf里增加mysqldump的账号密码
下边是脚本示例
#!/bin/bash
shopt -s extglob
# sql文件储存位置
BACKUP=/home/docker-mysql/backups
DATATIME=$(date "+%Y-%m-%d_%H%M%S")
DATABASE="备份的数据库名称"
echo "${DATATIME}开始备份数库${DATABASE}" >> /home/docker-mysql/backups-logs/log.txt
docker exec mysql mysqldump ${DATABASE} > ${BACKUP}/${DATATIME}.sql
# 删除之前的sql文件
# find "${BACKUP}" -type f ! -name "${DATATIME}.sql" -exec rm -rf {} +
[ -e ${BACKUP}/${DATATIME}.sql ] && echo "数据库${DATABASE}备份成功!" >> /home/docker-mysql/backups-logs/log.txt
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[mysqldump]
user=root
password=pwd
这里脚本已经编写完成,
使用命令编辑定时任务
crontab -e
然后把刚才的脚本路径写入,定时执行。
我是每天的凌晨3点钟执行定时备份
0 3 * * * cd /home/docker-mysql/; sh backup_mysql.sh
下边就是关于定时任务的命令
service crond status # 查看状态
service crond start # 启动任务
service crond stop # 停止任务