zoukankan      html  css  js  c++  java
  • 一个好用的Python备份mysql的脚本

    前几天打算用Python写一个mysql脚本,上Google看了下老外写的,写的挺好的,原地址在http://tecadmin.net/python-script-for-mysql-database-backup/#,所以就给 copy过来了

     1 #!/usr/bin/python
     2 ###########################################################
     3 #
     4 # This python script is used for mysql database backup
     5 # using mysqldump utility.
     6 #
     7 # Written by : Rahul Kumar
     8 # Website: http://tecadmin.net
     9 # Created date: Dec 03, 2013
    10 # Last modified: Dec 03, 2013
    11 # Tested with : Python 2.6.6
    12 # Script Revision: 1.1
    13 #
    14 ##########################################################
    15 
    16 # Import required python libraries
    17 import os
    18 import time
    19 import datetime
    20 
    21 # MySQL database details to which backup to be done. Make sure below user having enough privileges to take databases backup.
    22 # To take multiple databases backup, create any file like /backup/dbnames.txt and put databses names one on each line and assignd to DB_NAME variable.
    23 
    24 DB_HOST = 'localhost'
    25 DB_USER = 'root'
    26 DB_USER_PASSWORD = '_root_user_password_'
    27 #DB_NAME = '/backup/dbnames.txt'
    28 DB_NAME = 'db_name'
    29 BACKUP_PATH = '/backup/dbbackup/'
    30 
    31 # Getting current datetime to create seprate backup folder like "12012013-071334".
    32 DATETIME = time.strftime('%m%d%Y-%H%M%S')
    33 
    34 TODAYBACKUPPATH = BACKUP_PATH + DATETIME
    35 
    36 # Checking if backup folder already exists or not. If not exists will create it.
    37 print "creating backup folder"
    38 if not os.path.exists(TODAYBACKUPPATH):
    39     os.makedirs(TODAYBACKUPPATH)
    40 
    41 # Code for checking if you want to take single database backup or assinged multiple backups in DB_NAME.
    42 print "checking for databases names file."
    43 if os.path.exists(DB_NAME):
    44     file1 = open(DB_NAME)
    45     multi = 1
    46     print "Databases file found..."
    47     print "Starting backup of all dbs listed in file " + DB_NAME
    48 else:
    49     print "Databases file not found..."
    50     print "Starting backup of database " + DB_NAME
    51     multi = 0
    52 
    53 # Starting actual database backup process.
    54 if multi:
    55    in_file = open(DB_NAME,"r")
    56    flength = len(in_file.readlines())
    57    in_file.close()
    58    p = 1
    59    dbfile = open(DB_NAME,"r")
    60 
    61    while p <= flength:
    62        db = dbfile.readline()   # reading database name from file
    63        db = db[:-1]         # deletes extra line
    64        dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql"
    65        os.system(dumpcmd)
    66        p = p + 1
    67    dbfile.close()
    68 else:
    69    db = DB_NAME
    70    dumpcmd = "mysqldump -u " + DB_USER + " -p" + DB_USER_PASSWORD + " " + db + " > " + TODAYBACKUPPATH + "/" + db + ".sql"
    71    os.system(dumpcmd)
    72 
    73 print "Backup script completed"
    74 print "Your backups has been created in '" + TODAYBACKUPPATH + "' directory"
    # chmod +x dbbackup.py
    # python dbbackup.py
    做定时任务执行:
    0 2 * * * /usr/bin/python dbbackup.py
  • 相关阅读:
    Regexp:教程
    Regexp:目录
    笔记-C#:C# 方法、属性杂项-01
    Regexp:正则表达式应用——实例应用
    正则表达式:百科
    Regexp:template
    AngularJS:参考手册
    命令目录
    java实现连续数的公倍数
    java实现连续数的公倍数
  • 原文地址:https://www.cnblogs.com/pythonal/p/5907069.html
Copyright © 2011-2022 走看看