Django项目MySQL数据库每周SQL格式备份问题求助
解决Django+MySQL每周数据库备份问题
方案1:修复django-dbbackup生成SQL格式备份
你之前用django-dbbackup没得到.sql文件,是因为默认配置没有调用MySQL原生的mysqldump工具。只需在项目的settings.py中添加以下配置:
# 备份文件存储位置(替换为你实际的目录路径) DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage' DBBACKUP_STORAGE_OPTIONS = {'location': '/var/backups/django_db'} # 指定MySQL使用mysqldump生成SQL备份 DBBACKUP_COMMAND = { 'mysql': 'mysqldump -u {user} -p{password} {database} > {output_file}', }
配置完成后,执行备份命令即可生成.sql文件:
python manage.py dbbackup --database default
注意:确保运行命令的系统用户能访问mysqldump工具,且数据库账号拥有LOCK TABLES、SELECT等备份所需权限。
方案2:直接用mysqldump+定时任务(轻量无依赖)
如果觉得django-dbbackup过于繁琐,直接用MySQL原生工具配合定时任务更高效:
- 创建备份脚本(比如
mysql_backup.sh):
#!/bin/bash BACKUP_DIR="/var/backups/django_db" DATE=$(date +%Y%m%d_%H%M%S) DB_USER="your_db_username" DB_NAME="your_db_name" # 创建备份目录(不存在则自动创建) mkdir -p $BACKUP_DIR # 执行备份(建议用~/.my.cnf存储密码,避免明文泄露) mysqldump $DB_NAME > $BACKUP_DIR/db_backup_$DATE.sql # 可选:压缩备份文件节省空间 gzip $BACKUP_DIR/db_backup_$DATE.sql # 可选:自动删除7天前的旧备份 find $BACKUP_DIR -name "db_backup_*.sql.gz" -mtime +7 -delete
- 给脚本添加执行权限:
chmod +x mysql_backup.sh
- 设置每周定时任务(比如每周日凌晨2点执行):
打开crontab编辑器:
crontab -e
添加以下内容:
0 2 * * 0 /path/to/mysql_backup.sh
额外安全提示
不要在脚本中明文写数据库密码,可创建~/.my.cnf文件(权限设为600)存储账号信息:
[mysqldump] user=your_db_username password=your_db_password
内容的提问来源于stack exchange,提问作者Aakash Bansal
相关产品推荐
相关产品推荐

