mysql数据库变化检测_自动监控MySQL表结构变化脚本_mysql

通过Django实现自动监控MySQL数据库表结构变化,利用MD5校验对比新旧结构,找出新增、删除和变更的表,触发邮件通知。

自动监控mysql表结构变更脚本

摘要: 如何监控MySQL数据库表结构和表变更,并通知到相关的联系人、实现报警或通知? 由于平台采用django系统实现,因此通过如下代码实现(代码low,也可以写成python文件,传参数执行): 简单思路: 对用户指定库的所有列值进行md5,并存储到本地数据库,每次定时执行,校对md5,并找出不匹配的进行判断 会自动找出新增、删除、变更表结构的表# models.

如何监控MySQL数据库表结构和表变更,并通知到相关的联系人、实现报警或通知?

由于平台采用django系统实现,因此通过如下代码实现(代码low,也可以写成python文件,传参数执行):

简单思路:

对用户指定库的所有列值进行md5,并存储到本地数据库,每次定时执行,校对md5,并找出不匹配的进行判断

会自动找出新增、删除、变更表结构的表

# models.py

class MonitorSchema(models.Model):

table_schema = models.CharField(null=False, max_length=512)

table_name = models.CharField(null=False, max_length=512)

table_stru = models.TextField(null=False, default='')

md5_sum = models.CharField(null=False, max_length=256)

class Meta:

verbose_name = u'监控表结构变更表'

verbose_name_plural = verbose_name

permissions = ()

db_table = "dbaudit_monitor_schema"

# tasks.py

import datetime

import hashlib

import difflib

import mysql.connector as mdb

from celery import shared_task

from django.core.mail import EmailMessage

from django.template.loader import render_to_string

from auditdb.settings import EMAIL_FROM

@shared_task

def schema_modify_monitor(**kwargs):

check_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

conn = connect_db(**kwargs)

cursor = conn.cursor(dictionary=True)

query_info = "select table_schema,table_name,group_concat(COLUMN_NAME) as column_name," /

"group_concat(COLUMN_DEFAULT) as column_default,group_concat(IS_NULLABLE) as is_nullable," /

"group_concat(DATA_TYPE) as data_type,group_concat(CHARACTER_MAXIMUM_LENGTH) as char_length," /

"group_concat(COLUMN_TYPE) as column_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值