Python3.8实现mysql5.77数据备份压缩脚本源码
# -*- coding:utf-8 -*-
import os
import time
import tarfile
#定义服务器,用户名、密码、数据库名称(多个库分行放置)和备份的路径
DB_USER = 'root'
DB_NAME = '/root/heqing/scripts/dbname.txt'
BACKUP_PATH = '/root/heqing/backup/rds/'
DATETIME = time.strftime('%Y%m%d')
TDBACKUPPATH = BACKUP_PATH + DATETIME
print('creating backup folder!')
#创建备份文件夹
if not os.path.exists(TDBACKUPPATH):
os.makedirs(TDBACKUPPATH)
print('checking for databases names files')
#定义执行备份脚本,读取文件中的数据库名称,注意按行读写,不校验是否存在该库
def run_backup():
in_file = open(DB_NAME,"r")
for dbname in in_file.readlines():
dbname = dbname.strip()
print("now starting backup database {0}" .format(dbname))
dumpcmd = 'mysqldump -u {0} -B --max-allowed-packet=1024M --set-gtid-purged=OFF {1} > {2}/{3}.sql'.format(DB_USER,dbname,TDBACKUPPATH,dbname)
print(dumpcmd)
os.system(dumpcmd)
in_file.close()
#执行备份文件压缩
def run_tar():
os.chdir(TDBACKUPPATH)
for root, dirs, files in os.walk(TDBACKUPPATH):
for i in files:
compress_cmd = 'tar -czvf {}.tar.gz {}'.format(i, i)
print(compress_cmd)
os.system(compress_cmd)
#删除sql文件
remove_cmd = 'rm -fr *.sql'
os.system(remove_cmd)
print("file tar success")
#备份数据库文件存在就执行备份和压缩,否则退出
if os.path.exists(DB_NAME):
file1 = open(DB_NAME)
print("starting backup of all db listed in file"+DB_NAME)
run_backup()
run_tar()
print("backup success!")
file1.close()
else:
print("database files not found!")
exit()
python
这个脚本实现逻辑:
将你需要备份的库名写在dbname.txt中,如果存在此文件,则执行备份整库sql,在经过遍历tar压缩,如果不存在,则退出。已投入使用,感兴趣的朋友可以再优化代码