用Python写备份Mysql数据库脚本

时间:2007-01-04 09:48:43   来源:  作者:whsong  点击:次  出处:技术无忧
关键字:用Py

QUOTE:

#!/usr/bin/python

import os
import time
import ftplib
import traceback

#config vars
systempathchr="/" #路径分割符,*nix用"/" win32用"//"

dbuser="root" #数据库用户名
dbpwd="dbpwd" #数据库密码
dbnamelist=["dbone","dbtwo","dbthree"] #需要备份那些数据库

workdir="/path/to/backup/" #本地备份文件夹
errlogfile="databack.log" #错误日志名
ftp_addr="192.168.0.2" #ftp地址
ftp_port="2102" #ftp端口
ftp_user="databack" #ftp用户名
ftp_pwd="backpwd" #ftp密码
ftp_path="/" #存放到ftp路径

ftpqueue=[]


def ftpstor():
  #login
  bufsize=1024
  ftp=ftplib.FTP()
  try:
    ftp.connect(ftp_addr,ftp_port)
    ftp.login(ftp_user,ftp_pwd)
    ftp.cwd(ftp_path)
    for filepath in ftpqueue:
       
        #open file for input as binary
        f=open(filepath,"rb")
        #store file as binary
        print getfilename(filepath)
        ftp.storbinary("STOR "+getfilename(filepath),f,bufsize)
        f.close()
    ftp.quit()
  except:
    path=os.path.join(workdir,errlogfile)
    traceback.print_exc(file=open(path,"a"))

 

def dumpdb(dbname):
  global ftpqueue
  timeformat="%Y%m%d"
  sqlvalformat="mysqldump -u%s -p/"%s/" /"%s/" >/"%s/""
  tarvalformat="tar --directory=/"%s/" -zcf /"%s/" /"%s/""
  nowdate=time.strftime(timeformat)
  dumpfile=os.path.join(workdir,dbname+".dump")
  zipfile=os.path.join(workdir,dbname+nowdate+".tar.gz")
  sqlval=sqlvalformat % (dbuser,dbpwd,dbname,dumpfile)
 
  result=os.system(sqlval)
  tarval=tarvalformat % (workdir,zipfile,dbname+".dump")

  result=os.system(tarval)
  os.remove(dumpfile)
  ftpqueue.append(zipfile)

def getfilename(path):
 
  pt=path.rfind(systempathchr)
  return path[pt+1:]
 
def main():
  for dbname in dbnamelist:
    dumpdb(dbname)
 
  ftpstor()

main()


你有email邮箱吗?经常收到垃圾邮件而烦吗?立即使用邮箱LOGO在线制作酷Email logo图片


文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

300x250广告位招租