使用命令行备份和在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文件