2021-06-16

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()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容