【MySQL】Django自動備份MySQL資料庫
阿新 • • 發佈:2018-12-04
使用命令列備份和在Django中使用Python呼叫命令列進行備份:
使用命令列備份
錯誤的輸入:
mysqldump -u root -p mysql book_info > /home/python/newtest/book_info_$(date +%Y%m%d_%H%M%S).sql
這樣會提示輸入密碼,輸入密碼後會有錯誤資訊:
Enter password:
mysqldump: Couldn't find table: "book_info"
正確的輸入:
直接將使用者名稱,密碼直接挨著-u,-p輸入.
mysqldump -uroot -pmysql book_info > /home/python/newtest/book_info_$( date +%Y%m%d_%H%M%S).sql
這樣輸入會提示
[Warning] Using a password on the command line interface can be insecure.
意思是說,在命令列介面上直接使用密碼可能不安全。但是這樣是可以輸出所需要結果.
mysqldump -uusername -ppassword database_name > /pwd/database_name.sql
使用$(date +%Y%m%d_%H%M%S)
使用這個,作用類似於時間戳,為了保證不會重名覆蓋,具體使用在下面有寫.
django自動備份:
使用Python呼叫命令列:
使用Python來執行命令列,可以使用os.system()
雖然這樣得不到返回值,但這裡也不需要返回值,所以可以使用這個.
import os
def database_backup():
os.system('mysqldump -uroot -pmysql book_info > /home/python/newtest/book_info_$(date +%Y%m%d_%H%M%S).sql')
自動備份django-crontab:
關於django-crontab的使用,在另外一篇中寫過
https://blog.csdn.net/lvluobo/article/details/80979038
(date +%Y%m%d-%H%M%S)
在命令列輸入的時候,是可以得到
形如
20180718-112157
是可以修改顯示格式的,使用_等等都可以,但是%d %H必須有連線,不能為空格
值得注意的是:
vim zhidezhuyideshi_$(date+%Y%m%d_%H%M%S)
會提示:
date+%Y%m%d_%H%M%S:未找到命令
創建出來的檔案,也沒有時間作為字尾
zhidezhuyideshi_
正確的做法為:
vim zhidezhuyideshi_$(date +%Y%m%d_%H%M%S)
創建出來的檔案:
zhidezhuyideshi_20180718_113009
date後面需要加一個空格..
恢復資料庫
恢復資料庫,先進入指定資料庫(如果沒有,就建立一個同名數據庫),在mysql中執行命令:source /絕對路徑/SQL檔案