Python编写自动备份MySQL数据库脚本(外接钉钉消息通知)

0.11字数 205阅读 456

分享一个用Python实现的备份MySQL数据库脚本,实现原理是利用Python内置的os库,调用mysql数据库的mysqldump命令对远程数据库或者本地数据库进行备份,并计算出备份的SQL文件大小(单位为kb),同时以备份时间命名备份的SQL文件,并设定只保留最近5天的备份记录,同时调用钉钉群聊机器人接口,对备份后的数据库信息进行消息推送。有需要的运维小伙伴可以拿去修改使用,这个脚本在Linux服务器上使用crontab定时程序每日定时运行,已经运行近1年的时间了,目前没有出现任何问题。

import requests
import json
import os
import datetime

if not os.path.exists('mysqldb_backup'):
    os.mkdir('mysqldb_backup')
os.chdir('mysqldb_backup')

today = datetime.date.today()
yesterday = today - datetime.timedelta(days=5)

today_file_name = "/home/******/mysqldb_backup/mysql"+str(today)+".sql"
yesterday_file_name = "/home/******/mysqldb_backup/mysql"+str(yesterday)+".sql"

response_code = os.system("/usr/local/mysql/bin/mysqldump -u 数据库用户名 -p数据库密码 -h 数据库IP 数据库名称 > /home/******/mysqldb_backup/mysql`date +%Y-%m-%d`.sql")

file_size = int(os.path.getsize(today_file_name))/1024

if response_code == 0:
    text = "#### Message:\n\n > - MySqlDB Backup Completed!\n\n > - SQL_file_size:"+str(round(file_size,4))+"KB"
    if os.path.exists(yesterday_file_name):
        os.remove(yesterday_file_name)
else:
    text = "#### Message:\n\n > - MySqlDB Backup Error!\n\n > - Please check the server program."


dingding_url = "https://oapi.dingtalk.com/robot/send?access_token=钉钉机器人接口token" 
headers = {"Content-Type": "application/json; charset=utf-8"}

post_data = {
    "msgtype": "markdown",
     "markdown": {
     "title":"MySqlDB Backup Message",
     "text":text
     }
}

requests.post(dingding_url, headers=headers, data=json.dumps(post_data))

推荐阅读更多精彩内容