0
点赞
收藏
分享

微信扫一扫

linux定时备份mysql数据库

残北 2022-02-22 阅读 78
  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
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

举报

相关推荐

0 条评论