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\r"
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
posted @ 2017-02-26 22:38  东小夫  阅读(2261)  评论(0编辑  收藏  举报