python備份mysql腳本改進(jìn) 因?yàn)閿?shù)據(jù)庫(kù)太多了 不可能一個(gè)數(shù)據(jù)庫(kù)一個(gè)腳本
所以使用pymysql去讀取數(shù)據(jù)庫(kù)名稱然后進(jìn)行批量備份
腳本如下
import os
import time
import json
import requests
import pymysql
'''
shell 腳本刪除三天以前的備份文件
因?yàn)槭褂胮ython寫沒有 shell快所以使用shell刪除
find /data -mtime +3 -name "*.sql*" -exec rm -rf {} \;
'''
Date = time.strftime('%Y-%m-%d',? ? time.localtime(time.time()))
class Backup(object):
def __init__(self, host,? user, password):
self.host = host
self.user = user
self.password = password
def conn(self):
db = pymysql.connect(host=self.host,user=self.user, password=self.password,port=3306 )
cursor = db.cursor()
cursor.execute("show databases")
name = cursor.fetchall()
for iin name:
for dbnamein i:
backupcmd ="bash /home/mysql/delete.sh && cd /data/ && mysqldump -h %s -u%s -p%s %s > %s-%s.sql" % (self.host, self.user, self.password, dbname, Date, dbname)
os.system(backupcmd)
backup.tips(str(Date) +":今日mysql所有數(shù)據(jù)庫(kù)備份完成")
def tips(self,state):
# 飛書 發(fā)送消息
? ? ? ? ? ? url ="你的飛書地址"
? ? ? ? ? ? # 飛書webhook 地址
? ? ? ? ? ? payload_message = {
"msg_type":"text",
? ? ? ? ? ? ? ? "content": {
"text": state
}
}
headers = {
'Content-Type':'application/json'
? ? ? ? ? ? }
# response 構(gòu)建客戶端發(fā)送通知
? ? ? ? ? ? response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
return (response.text)
if __name__ =='__main__':
backup = Backup("192.168.60.40", 'tiptop', 'tiptop')
backup.conn()