python备份mysql数据库

介绍使用python结合mysqldump对mysql数据库进行备份

import os
import sys
import configparser
import time

def test_file_path(fp):
  if not os.path.exists(fp):
    raise RuntimeError('file {} not found'.format(fp))

def backup_mysqldb(backup_param):
  test_file_path(backup_param['mysql']['dump'])
  test_file_path(backup_param['bak']['cmd_zip'])
  cmd1 = '{dump} -u{user} -p{password} -h{hostip} 
  -P{port} {dbname}'.format(**backup_param['mysql'])
  print(cmd1)
  backup_name = time.strftime('mysqlbackup%Y%m%d_%H%M%S')
  backup_param['bak']['backup_name'] = backup_name
  cmd2 = backup_param['bak']['cmd_bak'].format(**backup_param['bak'])
  print(cmd2)
  cmd = cmd1 + ' | ' + cmd2
  print(cmd)
  os.system(cmd)

def del_old_backup(backup_param):
  backup_path = backup_param['bak']['backuppath']
  print(int(backup_param['bak']['keepday']))
  t = time.time() - int(backup_param['bak']['keepday']) * 24 * 60 * 60
  last_day = time.strftime('%Y%m%d', time.localtime(t))
  for fn in os.listdir(backup_path):
    fp = os.path.join(backup_path, fn)
    print(fp)
    if os.path.isfile(fp):
      file_day = get_time_from_name(fn)
      print(file_day, last_day)
      if file_day < last_day:
        print('del file ', fn)
        os.remove(fp)

def get_time_from_name(fn):
  # mysqlbackup20140211_172713.7z
  import re
  pattern = r'.*(d{8})_d*'
  m = re.match(pattern, fn)
  return m.group(1)
  
if __name__ == '__main__':  
  current_dir = sys.argv[0]
  current_dir = os.path.abspath(current_dir)
  current_dir = os.path.dirname(current_dir)
  os.chdir(current_dir)
  print(os.getcwd())
  config = configparser.ConfigParser()
  config.read_file(open(current_dir + r'config.ini'))
  for k,v in config.items():
    for k1,v1 in v.items():
      print('{}
    {}:{}'.format(k, k1, v1))
  backup_mysqldb(config)
  del_old_backup(config)

配置文件

[mysql]
hostip=localhost
user=root
password=12345
port=3306
dbname=test
dump=path_to_mysqldump.exe
[bak]
cmd_zip=.7z.exe
cmd_bak={cmd_zip} a {backuppath}{backup_name}.7z -si{backup_name}.bak
backuppath=.ackup
keepday=7

代码打包

原文地址:https://www.cnblogs.com/xkxjy/p/3672254.html