美文网首页
Ubuntu下mysql定时跨服务器数据库备份还原

Ubuntu下mysql定时跨服务器数据库备份还原

作者: 寒冰助手 | 来源:发表于2021-03-16 11:55 被阅读0次

    条件:服务器A、服务器B

    一、定时备份服务器A的数据库

    1.新建目录存放.sh文件

    cd mnt
    mkdir db_backup
    cd db_backup
    vim backup.sh
    #修改文件权限为可执行
    chmod +x backup.sh
    

    2.备份服务器A的数据库并传输到服务器B

    #备份路径
    BACKUP=/mnt/db_backup
    #当前时间
    DATETIME=$(date +%Y-%m-%d)
    #数据库地址
    HOST=xxx
    #数据库用户名
    DB_USER=xxx
    #数据库密码
    DB_PW=xxx
    #数据库名
    DATABASE=xxx
    
    #备份到服务器A
    mysqldump  -u${DB_USER} -p${DB_PW} ${DATABASE} > ${BACKUP}/$DATABASE-$DATETIME.sql
    
    cd $BACKUP
    #传输到服务器B
    sshpass -p B的密码 scp $DATABASE-$DATETIME.sql root@B的ip:/mnt/db_backup/
    
    #删除3天前备份的数据,可以自行更改
    find $BACKUP -mtime +3 -name "*.sql" -exec rm -rf {} \;
    

    3.创建定时任务

    #编辑crontab文件
    vim /etc/crontab
    添加以下内容(每天6点01分执行.sh文件)
    01 6    * * *   root    /mnt/db_backup/backup.sh
    #重启cron服务
    service cron restart
    

    二、定时将sql文件导入服务器B的数据库

    1.新建目录存放.sh文件(同上)
    2.将A传过来的sql文件导入到B

    DATABASE=xxx
    DATETIME=$(date +%Y-%m-%d)
    #操作mysql
    mysql -u user -ppasswd <<EOF
    drop database $DATABASE;
    create database $DATABASE;
    use $DATABASE;
    source /mnt/db_backup/$DATABASE-$DATETIME.sql;
    EOF
    

    3.创建定时任务(同上,时间可选择晚于服务器A定时时间10分钟)

    三、问题与解决

    1.跨服务器传输sshpass报错:

    Host key verification failed
    

    因为首次通过sshpass用A链接B,A中没有相关的密码记录,所以要先在A中执行一次:

    sshpass 测试文件 root@B的ip:/mnt/db_backup/
    

    根据提示键入密码,使A有了B的相关记录,即可解决此问题
    2.建议对.sh文件制定定时任务前都先手动执行一遍,测试能否成功,执行命令:

    bash xxx.sh
    

    相关文章

      网友评论

          本文标题:Ubuntu下mysql定时跨服务器数据库备份还原

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