linux定时备份mysql数据库

  1. 编写shell脚本
#! /bin/bash
# mysql数据库用户和密码
user=root
pass=123456
port=3306
# 需要定时备份的数据表列表
dbNames=(innovate_admin innovate_all training)
# 每次的备份数据以日期创建文件夹存放,同时删除过期备份
# 此处以保留1个月的备份数据为例
DATE=`date -d "now" +%Y%m%d%H`
ODATE=`date -d "-1 month" +%Y%m%d%H`
newdir=/home/backup/$DATE
olddir=/home/backup/$ODATE
welcome_msg="Welcome to use MySQL backup tools!   -- by luo"

# 判断mysql实例是否正常运行
mysql_ps=`ps -ef |grep mysql |wc -l`
mysql_listen=`netstat -an |grep LISTEN |grep $port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
echo "ERROR:MySQL is not running! backup stop!"
exit
else
echo $welcome_msg
fi

# 删除过期备份数据
if [ -d $olddir ];
  then
    rm -rf $olddir
    echo "Expired backup data delete complete!"
fi
# 创建新备份文件夹
mkdir $newdir
# 对备份数据库列表的所有数据库备份
for dbName in ${dbNames[*]}
do
  dumpFile=$dbName-$DATE.sql.gz
  mysqldump -u$user -p$pass $dbName | gzip > $newdir/$dumpFile
  # 如mysql运行在容器中则用如下命令替换上一行
  docker exec -i {docker_name} mysqldump -u$user -p$pass $dbName | gzip > $newdir/$dumpFile
done
  1. 新增调度任务,可用两种方法:
    1)在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
    2)直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
    crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务

我这里直接crontab -e 并添加如下命令(# 每天凌晨1点执行,同时输出日志)
0 1 * * * cd /home/mysql/;sh mysql_backup.sh >> log.txt 2>&1

检查crontab是否开机自启动:systemctl is-enabled crond
设置开机自动启动crond服务:chkconfig crond on
关闭开机自动启动crond服务:chkconfig crond off

ps:docker中-i以及-t的作用:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值