【MySQL】Django自动备份MySQL数据库

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

猜你喜欢

转载自blog.csdn.net/lvluobo/article/details/81102448