mysql数据库自动备份

脚本不生效(Syntax error: redirection unexpected)参考
环境:docker容器中安装mysql环境
建议使用root用户去执行

crond + cron 实现定时执行

  • 安装
    yum install crond
    乌班图
    apt-get install cron
  • 启动
    service crond start
    乌班图
    service cron start
  • 查看状态
    service crond status
    乌班图
    service cron status
  • 执行
    crontab xx.cron
  • 查看任务列表
    crontab -l
  • 删除所有任务
    crontab -r
  • 示例:每分钟写入 Good morning 到 mine.cron

[root@ecs-f1dd-0001 fztmp]# echo ‘* * * * * echo “Good morning.” >> /fztmp/test.txt’ > mine.cron
[root@ecs-f1dd-0001 fztmp]# crontab mine.cron

创建一个配置文件,放置需要备份的服务器配置:

ip root **** archive
ip root **** archive
ip root **** archive
ip root **** archive

备份脚本-mysql_backup_script.sh:

#!/bin/bash

# 保存备份个数,备份 7 天数据
number=7
# 备份保存路径
backup_dir=/mnt/vdb/mysql_backup/script

# 读取服务器配置文件
while read line; do
    IFS=" " read -r ip username password database_name <<< "$line"

    # 日期
    dd=`date +%Y-%m-%d-%H-%M-%S`

    # 如果文件夹不存在则创建
    if [ ! -d $backup_dir ]; then
        mkdir -p $backup_dir
    fi

    # 备份工具
    #tool=`docker exec mysql mysqldump`

    # 简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
    docker exec mysql mysqldump -h$ip -P3306 -u$username -p$password $database_name -d> $backup_dir/$database_name-$ip-$dd.sql

    # 写创建备份日志
    echo "create $backup_dir/$database_name-$ip-$dd.dupm" >> $backup_dir/log.txt
    echo "docker exec -it mysql mysqldump -h$ip -P3306 -u$username -p$password $database_name -d" >> $backup_dir/log.txt

    # 找出需要删除的备份
    delfile=`ls -l -crt $backup_dir/${database_name}-${ip}*.sql | awk '{print $9 }' | head -1`

    # 判断现在的备份数量是否大于 $number
    count=`ls -l -crt $backup_dir/${database_name}-${ip}*.sql | awk '{print $9 }' | wc -l`

    if [ $count -gt $number ]; then
        # 删除最早生成的备份,只保留 number 数量的备份
        rm $delfile
        # 写删除文件日志
        echo "delete $delfile" >> $backup_dir/log.txt
    fi
done < $backup_dir/servers.conf

给脚本文件授权:

chmod +x /mnt/vdb/mysql_backup/mysql_dump_script.sh

创建执行文件-dump.cron,每天凌晨三点执行:

0 3 * * * /mnt/vdb/mysql_backup/mysql_backup_script.sh

创建定时任务:

cd /mnt/vdb/mysql_backup
crontab dump_file.cron

查看执行错误日志:

cat /var/spool/mail/root

目录结构:
在这里插入图片描述
1、安装cron 2、拷贝文件到/mnt/vdb 3、授权文件 4、启动.cron文件

大功告成!
参考文章:MySQL 定时备份数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值