• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解

    一、遇到的问题

    我们使用过mysqldump都知道,使用该命令后,需要我们手动输入 mysql的密码,那么我们就不能够直接在crontab中使用mysqldump实现周期备份。其实我们可以使用expect脚本自动输入密码,从而实现真正的周期备份。如果你不知道什么是expect,建议先请看这篇文章:https://www.jb51.net/article/197865.htm

    二、思路

    1.  创建一个utils文件,里面存放shell脚本,包括mysqldump、scp等命令
    2. 使用expect脚本,执行utils内的脚本,并为其自动输入密码
    3. 最后使用驱动脚本,执行expect,在该脚本里面传入需要的参数

    思路如下:

    三、代码

    3.1、单机冷备份

    (1)mysqldump的shell脚本
    backup.sh:

    #!/bin/bash
    
    mysql_username=$1
    backup_databases=$2
    backup_path=$3
    
    mysqldump -u ${mysql_username} -p --databases ${backup_databases} > ${backup_path}

    (2)执行mysqldump的expect脚本,能帮助我们自动输入mysql代码
    single_cold_backup_service.exp:

    #!/usr/bin/expect
    
    set timeout 5
    
    #设置本机信息
    set mysql_username [lindex $argv 0] 
    set backup_database [lindex $argv 1] 
    set backup_path [lindex $argv 2] 
    
    #utils路径
    set utils_path /home/hadoop/backup_script/utils
    
    spawn bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}
    
    
    expect {
    	"*assword*" {send "nimabidecao1\r"} #输入密码
    }
    expect eof

    (3)驱动脚本,执行expect,这里可以传入需要的参数
    single_cold_backup_service_driver.sh:

    #!/bin/bash
    
    #这里的数据就可以写死了
    mysql_username=root
    backup_databases=school
    backup_path=$HOME/backup_data/${backup_databases}.sql
    
    #运行expect脚本
    expect $HOME/backup_script/single_cold_backup/single_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path}

    这里一定要十分注意自己的路径,强烈建议使用绝对路径来执行

    (4)使用crontab周期执行驱动脚本
    进入crontab编辑:crontab -e
    输入如下内容:

    0 9 * * 1 bash /home/hadoop/backup_script/single_cold_backup/single_cold_backup_driver.sh 

    意思为:每周1早上9点执行一次备份
    若你想确定自己想要的时间,可以到这个网址:https://crontab-generator.org/ 去点选自己想要的时间


    3.2、双机冷备份

    (1)复制远程文件,用于拷贝本地机的mysql备份文件
    scp.sh:

    #!/bin/bash
    
    local_backup_path=$1
    another_user=$2
    another_ip=$3
    another_backup_path=$4
    
    scp ${local_backup_path} ${another_user}@${another_ip}:${another_backup_path}

    (2)执行mysqldump的expect脚本,能帮助我们自动输入mysql代码
    double_cold_backup_service.exp:

    #!/usr/bin/expect
    
    set timeout 5
    
    #主机信息
    set mysql_username [lindex $argv 0] 
    set backup_database [lindex $argv 1] 
    set backup_path [lindex $argv 2] 
    
    #从机信息
    set slave_user [lindex $argv 3]
    set slave_ip [lindex $argv 4]
    set slave_backup_path [lindex $argv 5]
    
    #utils路径
    set utils_path /home/hadoop/backup_script/utils
    
    
    spawn bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}
    
    expect {
    	"*assword*" {send "nimabidecao1\r"} #输入密码
    }
    
    spawn bash ${utils_path}/scp.sh ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}
    
    expect {
      "*assword*" {send "nimabidecao1\r"} #输入密码
    }
    
    expect eof

    (3)驱动脚本,执行expect,这里可以传入需要的参数
    double_cold_backup_service_driver.sh:

    #!/bin/bash
    
    #本机信息
    mysql_username=root
    backup_databases=school
    backup_path=$HOME/backup_data/${backup_databases}.sql
    
    #从机信息
    slave_user=meizhaowei
    slave_ip=172.20.10.14
    slave_backup_path=backup_data/doule_cold_backup_data/${backup_databases}.sql
    
    
    #执行写绝对路径
    expect $HOME/backup_script/double_cold_backup/double_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}

    (4)使用crontab周期执行驱动脚本

    0 9 * * 1 bash /home/hadoop/backup_script/double_cold_backup/double_cold_backup_driver.sh

    意思是:每周1早上9点执行一次备份

    到此这篇关于linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解的文章就介绍到这了,更多相关mysql周期冷备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL定时备份方案(利用Linux crontab)
    • Linux6.7卸载系统自带的mysql-libs* crontab命令不能用了原因分析
    • MySQL定时备份之使用Linux下的crontab定时备份实例
    • Linux系统利用crontab定时备份Mysql数据库方法
    上一篇:SQL 列不同的表查询结果合并操作
    下一篇:MySQL之范式的使用详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解 linux,使用,mysqldump+expect+crontab,