当前位置:   article > 正文

mysql 表结构变动监控_自动监控MySQL表结构变更脚本-阿里云开发者社区

mtop 监控表结构变更

如何监控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_type,group_concat(COLUMN_COMMENT) as column_comment " \

"from columns wher

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/700987
推荐阅读
相关标签
  

闽ICP备14008679号