1. 前言
数据备份对于保证数据安全至关重要。而手动备份费时费力,容易出错。因此,实现自动备份是非常必要的。本文将介绍一段用Python实现的自动备份脚本,可以帮助您快速轻松地进行数据库备份。
2. 脚本实现
本脚本需要使用Python以及MySQLdb库,MySQLdb库是Python连接MySQL数据库的标准库。在开始编写脚本之前,我们需要先安装MySQLdb库。
2.1 安装MySQLdb库
在命令行输入以下命令即可安装MySQLdb库:
pip install MySQL-python
如果出现错误信息,可以尝试更换pip源。更换pip源的命令如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple MySQL-python
2.2 脚本实现
以下是自动备份脚本的代码:
import os,time
import MySQLdb
DBHOST = 'localhost' #数据库主机地址
DBUSER = 'user' #数据库用户名
DBPASSWORD = 'password' #数据库密码
DATABASES = ['test'] #要备份的数据库名称,可以添加多个,以逗号分隔
BACKUP_DIR = '/backup' #备份文件的存储路径
KEEP_DAYS = 7 #备份文件保留的天数
#获取当前时间
def get_time():
return time.strftime('%Y%m%d-%H%M%S')
#备份数据库
def backup_db(hostname, username, password, dbname, backup_dir):
#创建备份文件
backup_file = '{}/{}_{}.sql'.format(backup_dir, dbname, get_time())
#备份数据库
os.system('mysqldump -h{} -u{} -p{} {} > {}'.format(hostname, username, password, dbname, backup_file))
#返回备份文件路径
return backup_file
#删除过期的备份文件
def delete_old_files(dirname, keep_days):
expired_time = time.time() - keep_days * 3600 * 24
for filename in os.listdir(dirname):
file_path = '{}/{}'.format(dirname, filename)
if os.stat(file_path).st_mtime < expired_time:
os.remove(file_path)
if __name__ == '__main__':
#连接数据库
conn = MySQLdb.connect(DBHOST, DBUSER, DBPASSWORD)
#备份数据库
for db in DATABASES:
backup_file = backup_db(DBHOST, DBUSER, DBPASSWORD, db, BACKUP_DIR)
print('Backup {} success, file path: {}'.format(db, backup_file))
#删除过期的备份文件
delete_old_files(BACKUP_DIR, KEEP_DAYS)
#关闭数据库连接
conn.close()
该脚本将备份指定的MySQL数据库,并将备份文件保存到指定目录中。脚本还会删除指定目录下保留天数之前的备份文件。
3. 使用方法
将上面的代码保存为backup.py,使用以下命令运行脚本:
python backup.py
该命令将备份指定数据库,并将备份文件保存到指定目录中。备份文件名格式为“数据库名_年月日-时分秒.sql”。过期的备份文件将被自动删除。
4. 总结
自动备份对于保证数据安全至关重要。使用自动备份脚本可以在保证数据安全的同时,减少了手动备份的繁琐过程,提高了效率。本文介绍了一个用Python实现的自动备份脚本,希望可以对您有所帮助。