首页 > 其他分享 >tidb快照备份并发送企业微信机器人通知

tidb快照备份并发送企业微信机器人通知

时间:2023-08-22 15:00:39浏览次数:33  
标签:-% 快照 微信 备份 datetime token tidb msg self

tidb备份使用的是br进行快照备份 + 日志备份具体代码如下

#qiyewx.pyimport json

from datetime import datetime
import requests
from config import * # 可以把机器人的配置信息写到一个单独的config里面 也可以直接填到脚本里 
class Qiyewx():

    def __init__(self):
        self.corpid = corpid    # 企业微信CorpID

self.corpsecret = corpsecret # 应用的Secret
        self.agentid = agentid  # 应用的AgentID
        self.touser = touser    # 接收提醒的用户账号,多个用户用竖线分隔
self.token = self.get_access_token()

    def get_access_token(self):
        rep = requests.get(
            f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.corpid}&corpsecret={self.corpsecret}")
        access_token = json.loads(rep.text).get('access_token')
        return access_token

    def send_markdown_msg(self,msg):
        header = {
            "Content-Type": "application/json"
        }
        data = {
            "touser": self.touser,
            "msgtype": "markdown",
            "agentid": self.agentid,
            "markdown": {
                "content": msg
            }
        }
        rep = requests.post(f'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.token}',
                            headers=header, data=json.dumps(data))
        print(rep.text)

# baktidb.py

import psutil
import os
import subprocess
from datetime import datetime
from qiyewx import Qiyewx
BACKUP_PATH = '/tidb/backup/xxxxx-' + datetime.strftime(datetime.now(), '%Y-%m-%d')


def getsize(top):
    sum_size = 0
    for root, dirs, files in os.walk(top, topdown=False):
        for name in files:
            size = os.path.getsize(os.path.join(root, name))
            sum_size = sum_size + size
    return f"{sum_size / (1024 ** 3):.2f} GB"


bak_command = f"""tiup br backup full --pd "PD地址" --storage "local://{BACKUP_PATH}" --ratelimit 120 --log-file {BACKUP_PATH}.log"""    #放到定时任务里面,如果tiup这个命令没有在PATH环境变量里面 需要写绝对路径
try:
  retcode, output = subprocess.getstatusoutput(bak_command)
  e = Qiyewx()
  if retcode != 0:
      msg = f"**数据库备份**\n>备份时间: {datetime.strftime(datetime.now(), '%Y-%m-%d')} \n>备份目录: {BACKUP_PATH}\n>备份结果: <font color =\"warning\">**失败**</font> \n>消息: {output}"
      e.send_markdown_msg(msg)
  elif retcode == 0:
      a = getsize(BACKUP_PATH)
      usage = psutil.disk_usage('/')
      free_disk = f"{usage.free / (1024 ** 3):.2f}GB"
      msg = f"**数据库备份**\n>备份时间: {datetime.strftime(datetime.now(), '%Y-%m-%d')} \n>备份目录: {BACKUP_PATH}\n>数据大小: {a}\n>备份结果: <font color =\"info\">**正常**</font> \n>剩余磁盘空间: {free_disk}"
      e.send_markdown_msg(msg)
except Exception as e:
  msg = f"**数据库备份**\n>备份时间: {datetime.strftime(datetime.now(), '%Y-%m-%d')} \n>备份目录: {BACKUP_PATH}\n>备份结果: <font color =\"warning\">**失败**</font> \n>消息: {e}"
  e.send_markdown_msg(msg)

  

成功和失败的消息样式

 

 

 

 

标签:-%,快照,微信,备份,datetime,token,tidb,msg,self
From: https://www.cnblogs.com/chentut/p/17648541.html

相关文章

  • ios app分享微信h5二次转发无法自定义标题icon问题的解决方法
     我的实现场景是打开app的时候ios走universallink,安卓走微信jssdk。安卓二次转发自定义标题有效,ios则不行。参考了微信开放社区,竞品的分享方法。一直摸不到头绪,后面把限制打开app安卓走jssdk限制的代码注释,让ios也走微信jssdk,二次分享自定义样式终于可行,问题解决。......
  • 微信_如何响应用户请求;
    <imgsrc=""alt=""/><?php/**第二十三小分队(23工作室)*感谢:方倍工作室;**CopyRight2014-05-30AllRightsReserved*///签名define("TOKEN","weixin");$wechatObj=newwechatCallback();//isset()检测变量是否设置;if(!i......
  • DDD实践:实现基于快照机制的变更追踪
    王有志,一个分享硬核Java技术的互金摸鱼侠加入Java人的提桶跑路群:共同富裕的Java人去年我们在重构项目中落地了DDD,当时花了点时间研究了下阿里巴巴大淘宝技术发布的《阿里技术专家详解DDD系列》,其中第三讲《阿里技术专家详解DDD系列 第三讲 - Repository模式》中提到了一项......
  • 微信开发之一键获取好友详情的技术实现
    简要描述:获取联系人信息请求URL:http://域名地址/getContact请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String登录实例标识wcId是String好友微信id/群id,多个好友/群以","分......
  • 微信开发之一键删除好友的技术实现
    简要描述:删除联系人请求URL:http://域名地址/delContact请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是String微信实列IDwcId是String需删除的微信id返回数据:参数名类型说明codestring1000成功,1001失败msgstring反馈......
  • 在odoo16.0中使用微信支付
    作为国内移动支付的两大提供商之一的微信支付并不在Odoo官方的支持列表中,甚至曾经一度被官方支持的支付宝(Alipay)也在16.0以后的版本中遭到的过时的标记,被并入了asipay的选项中。国内的生态不被官方重视也并非一日,但是需求并不会因为不被重视而消失,因此,我们决定自己来手动实现。......
  • 微信社群管理助手开发--基于GEWE框架
    当前市场上有各式各样的社群管理助手,但稍不留神就可能面临封号的风险,这将导致客户资源的流失,而重新获取客户需要耗费宝贵的时间。因此,此时亟需一个可靠的底层开发框架,以支持社群管理助手的稳定开发。此时gewe框架的重要性就出来了,提供了所有的社群助手功能,以下为部分功能。GEWE框架......
  • 微信开发之一键撤回消息的技术实现
    撤回消息请求URL:http://域名地址/revokeMsg请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId否string接收方微信id/群idmsgId是long消息msgId(发送类接口返回的msgId)newMsgId是long消息newMsg......
  • 解决vueH5微信公众号扫一扫调用失败问题
    所使用的是importwxfrom'weixin-js-sdk'首先保证签名,域名配置等开发配置没有问题在开发工具当中显示没有问题一到真机测试就不行往下看      特别注意所需关键信息存在本地缓存中   ......
  • 微信小程序中的路由及其区别
    wx.navigateTo():保留当前页面,跳转到应用内的某个页面。但是不能跳到tabbar页面wx.redirectTo():关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到tabbar页面wx.switchTab():跳转到tabBar页面,并关闭其他所有非tabBar页面wx.navigateBack()关闭当前页面,返回上......