1. 程式人生 > >linux備份mysql文件並恢復的腳本,以及其中出現的錯誤:ERROR: ASCII '' appeared in the statement

linux備份mysql文件並恢復的腳本,以及其中出現的錯誤:ERROR: ASCII '' appeared in the statement

linux備份 表示 RR pytho 簡單 大括號 his 恢復 然而

首先是在網上找了一下教程,代碼很簡單

#!/bin/bash


folder=~/test
time=`date +%Y%m%d`

mysqldump -u user -p pwd -hlocalhost databasename | gzip > $folder/databasename_$time.sql.gz
#
find $folder -name databasename_*.sql.gz -type f -mtime +7 -exec rm {} \;
#
gunzip < $folder/databasename_$time.sql.gz | mysql -hlocalhost -uuser -ppwd databasename

因為寫python代碼習慣了,碰到=就自然而然敲空格,結果很多變量都沒有值,所以這裏需要註意一下,然後user和pwd就是你自己數據的用戶名和密碼,databasename就是你要操作的數據庫名稱,因為不想浪費內存就直接將mysqldump生成的sql文件進行了壓縮處理,然後中間的命令就是找到七天以前的文件並進行刪除操作,-exec是值後面的命令將會被執行,大括號是被執行對象集合,後面以分號結尾,加一個反斜杠防止被轉義,第三行命令就是從gzip文件中恢復數據到數據庫,一開始我是用gzip,然後就報了一個錯誤:

ERROR: ASCII ‘\0‘ appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII ‘\0‘ is expected. Query: ‘.

我去搜索了一下發現沒有什麽好的解決方案,然後把sql語句解壓後用命令發現可以執行.sql文件,就試了一下不使用gzip改用gunzip,然後就腳本就成功運行並且沒有相類似的報錯了。

後面的定時執行也順帶提一下,

# chmod +x bashname.sh  --為腳本添加執行權限
# crontab -e
00 3 * * * root ~/bashname.sh
# 表示每天3點00分執行腳本

然後重啟一下crontab就可以了。

linux備份mysql文件並恢復的腳本,以及其中出現的錯誤:ERROR: ASCII '\0' appeared in the statement