zoukankan      html  css  js  c++  java
  • Linux下自动备份MySQL

    使用expect和mysqldump备份

    expect

    expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。

    例如,执行shell脚本的过程中,需要输入用户名、密码等,可使用expect来完成自动输入。

    安装expect
    yum install tcl
    yum install expect
    

    脚本

    shell脚本
    #! /bin/bash
    currentTime=`date +%s`
    sql="/home/cg/backup/myblog_$currentTime.sql"
    /usr/lnmp/mysql-5.7.16/bin/mysqldump -umysql -p myblog>$sql
    
    使用了expect的shell脚本
    #! /usr/bin/expect
    
    set timeout 10
    set password [lindex $argv 0]
    spawn /home/cg/shell/backup_database.sh
    expect "Enter password:"
    send "$password
    "
    expect eof
    

    定时执行

    执行命令

    crontab -e
    

    然后输入:

    * * * * 1 /home/cg/shell/backup_database 1234567 >> home/cg/shell/backup.log
    

    错误集

    mysqldump: Got error: 1049: Unknown database 'blog;'

    错误:

    mysqldump: Got error: 1049: Unknown database 'blog;' when selecting the database

    解决办法:

    1.若在windows命令行下,mysqldump备份命令后不能有分号“;”。

    2.在expect脚本中,spawn不能识别shell命令“输出重定向”符号,因此要把mysqldump命令写到其他shell脚本文件
    中,然后在expect脚本中调用该shell脚本。示范代码:

    spawn /home/cg/shell/backup_database.sh
    求道之人,不问寒暑。
  • 相关阅读:
    用UILocalNotification实现一个闹钟(Swift)
    Swift
    iOS判断一些权限是否被禁止
    ofbiz学习笔记
    POJ1062 昂贵的聘礼 【DFS】
    echarts 应用数个样例
    java 中缀转后缀(逆波兰)
    开放是否能让苹果成为智能家居的标准制定者?
    2015阿里校招前端在线题目
    hql中不能写count(1)能够写count(a.id)
  • 原文地址:https://www.cnblogs.com/chuganghong/p/6452521.html
Copyright © 2011-2022 走看看