美文网首页
ubuntu服务器定时备份数据库

ubuntu服务器定时备份数据库

作者: silas简 | 来源:发表于2023-11-06 17:55 被阅读0次

    1.安装定时器

    apt-get install cron 一般已经安装无需重新安装、

    2.查看是否安装

    service cron status


    image.png

    3.创建脚本

    目录:/home/backups/mysql/bak.sh

    \#!/bin/bash
    \#mysql容器名称
    mysql_container="mysql_172"
    \#MySQL备份用户
    mysql_user="root"
    \#MySQL备份用户的密码
    mysql_password="数据库密码"
    \#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2
    dbname='superzig-operatingtable'
     
    \#备份时间
    backtime=`date +%Y%m%d%H%M%S`
    \#日志备份路径 此处指向你创建的文件夹
    logpath='/home/backups/mysql/log'
    \#数据备份路径 此处指向你创建的文件夹
    datapath='/home/backups/mysql/data'
     
    \#查看备份目录
    if [ ! -d  "$logpath" ]; then 
            mkdir -p "$logpath"
    fi
     
    \#查看备份目录
    if [ ! -d  "$datapath" ]; then
            mkdir -p "$datapath"
    fi
     
    \#日志记录头部
    echo ‘”备份时间为${backtime},备份数据库表 ${dbname} 开始” >> ${logpath}/mysqllog.log
    \#正式备份数据库
    for table in $dbname;
    do
            source=`docker exec -i ${mysql_container} mysqldump  -u${mysql_user} -p\'${mysql_password}\' --single-transaction ${table}> ${datapath}/${backtime}+.sql` 2>> ${logpath}/mysqllog.log;
            #备份成功以下操作
            if [ "$?" != 0 ] ; then
                    #备份失败则进行以下操作
                    echo “数据库表 ${dbname} 备份失败!!” >> ${logpath}/mysqllog.log
            else
                    cd $datapath
                    \#为节约硬盘空间,将数据库压缩
                    tar -zcvf ${table}${backtime}.tar.gz ${backtime}.sql > /dev/null
                    \#删除原始文件,只留压缩后文件
                    rm -f ${datapath}/${backtime}.sql
                    \#删除30天前备份
                    find $datapath -name "*.tar.gz" -type f -mtime +90 -exec rm -rf {} \; > /dev/null 2>&1
                    echo “数据库表 ${dbname} 备份成功!!” >> ${logpath}/mysqllog.log
            fi
    done
    

    4.添加定时任务: crontab –e


    image.png image.png

    5.重启定时器:service cron restart

    6./home/backups/mysql/data中存储的是sql语句 /home/backups/mysql/log中存储的是日志

    7.如果数据库端口号不是默认的3306,这时备份脚本中可以添加 -P3320, 3320为指定端口号, 如果容器名称改变了,需要改变脚本中的容器名称

    image.png

    相关文章

      网友评论

          本文标题:ubuntu服务器定时备份数据库

          本文链接:https://www.haomeiwen.com/subject/rgrnurtx.html