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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM