zoukankan      html  css  js  c++  java
  • linux数据库备份脚本

    部署服务器,需要安装个MySQL,所以有备份数据库数据的定时任务的需求:

    写了两种方法,先记录下来,

    方法一:

    1.编写相应脚本:

    time=$(date "+%Y%m%d")

    mysqldump  -u*** -p**** test >  /data/test/test${time}.sql

    2.编辑crontabding定时任务,然后重启;

    1 0 * * *  sh /data/test/test.sh    (每天都执行)

    方法二:

    使用python脚本:

    import os
    import subprocess
    import time
    import datetime
    
    
    DB_USERNAME = "****"
    DB_PASSWORD = "****"
    PATH = "/data/dbback/bk"
    DEFAULT_DB = "law_sh"
    
    def backDb(dbName):
        if(dbName==None):
            dbName=DEFAULT_DB      
        targetPath=PATH + os.sep + dbName + "-" + time.strftime('%Y-%m-%d',time.localtime()) + ".sql"
        command="mysqldump -u" + DB_USERNAME + " -p" + DB_PASSWORD + " " + dbName + " >" + targetPath
        print('execute command : ',command)
        p=subprocess.Popen(command,shell=True,)
        p.wait()
        print("------------- db backup successful ---------")
    
        delUselessFile()
        print("------------- delete invalid backFile successful ---------")
        return 
    
    
    def recover(fileName):   
        targetPath=PATH +os.sep+ fileName
        dbName=fileName.split("-")[0]
        command="mysql -u" + DB_USERNAME + " -p" + DB_PASSWORD + " " + dbName + " <" + targetPath
        print('execute command : ',command)
        p=subprocess.Popen(command,shell=True,)
        p.wait()
        print("------------- db recover successful ---------")
        return   
    
    def delUselessFile():
        print('where are you ?')
        files=os.listdir(PATH)
        for delFile in files:
           if isOverDue(delFile):
               os.remove(PATH+os.sep+delFile)
           print('  delete file ',delFile) 
          
    
    def isOverDue(file):
        cpDate=datetime.datetime.now()-datetime.timedelta(days=7)
        dateString = file[file.find("-") + 1:file.find(".")]
    
        fileDate= datetime.datetime.strptime(dateString,'%Y-%m-%d')
       
        print(fileDate.strftime('%Y-%m-%d'),'   --   ',cpDate.strftime('%Y-%m-%d'))
        if(fileDate<cpDate):
           return True
        else:
           return False  
    
    backDb('law_sh')
    backDb('law_pd')
    

      方法一更加简单,方法二增加成本,但对于这类基本不会改动的脚本,也关系不大,看自己的选择。

  • 相关阅读:
    C#网络编程(异步传输字符串)
    C#网络编程(同步传输字符串)
    C#网络编程(基本概念和操作)
    Asp.Net 构架(HttpModule 介绍)
    Asp.Net 构架(Http Handler 介绍)
    Asp.Net构架(Http请求处理流程)
    XML的应用 ---- 从一个范例看xml数据、xsd验证、xslt样式
    jQuery的ajax跨域实现
    常见26个jquery使用技巧详解
    常用Request对象获取请求信息
  • 原文地址:https://www.cnblogs.com/zqsky/p/7305515.html
Copyright © 2011-2022 走看看