標籤:解決 red app set unzip stat error: 轉義 簡單
首先是在網上找了一下教程,代碼很簡單
#!/bin/bashfolder=~/testtime=`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 -e00 3 * * * root ~/bashname.sh# 表示每天3點00分執行指令碼
然後重啟一下crontab就可以了。
linux備份mysql檔案並恢複的指令碼,以及其中出現的錯誤:ERROR: ASCII '\0' appeared in the statement