linux備份mysql檔案並恢複的指令碼,以及其中出現的錯誤:ERROR: ASCII '\0' appeared in the statement

來源:互聯網
上載者:User

標籤:解決   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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.