前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据生命周期管理的思考

数据生命周期管理的思考

作者头像
jeanron100
发布2019-03-14 15:37:30
6010
发布2019-03-14 15:37:30
举报
文章被收录于专栏:杨建荣的学习笔记

这是学习笔记的第 1897 篇文章

今天在思考数据生命周期管理的时候,理清了一些思路。

作为DBA,其实需要从更高的一个角度来看待你所管理的数据。

打个比方,如果我知道我管理的1000个数据库每天发生了多少张表的变更,哪些是人工触发的,哪些是程序触发的,如果我们知道,那么我们处理问题的时候会更加主动,而绝大多数情况下,其实我们是不知道的,或者说我们觉得不需要关注这些。

我们来细化一下,对于表的DML操作,应该是程序端能够处理的,对于这部分的数据,其实我们可以通过快照的方式来处理,比如总共有1万张表,那么我们可以做周期性的抽取,通过细粒度的数据抽取,我们可以知道某个表在一段时间内的数据变化情况,是否存在碎片等,当然这个频率不宜过高,一般一天一次到两次即可。

对于DDL的操作,其实比较抽象,有CREATE,ALTER,DROP, (不包含TRUNCATE),简单来说,也是周期性抽取,频率可能会更高一些,但是数据量要远比DML的小得多。假设10000张表100天发生了20次变更,那么总的抽取记录数就应该是10020,而不是10000*100=100万,所以相比来说,这是一种因需而动的处理方式,

这个DDL的场景怎么落地,和数据生命周期管理如何关联起来,我们举个例子。比如表test有10个字段,在一个月以后,字段数是20个,那么可以通过两个维度,第一个是时间维度,从10个字段到20个字段,在这段时间范围内是如何变化的。比如我们可以根据数据的变化轨迹定位到10个字段到19个字段的过程,第二个维度,从字段名触发,某个字段在一段时间里是否发生了变化,比如类型从varchar(30)变为varchar(50)

我们可以通过抽取的建表语句来进行比对。

比如我们根据DDL变化做了两次抽取,可以理解是两个快照,那么通过对比两个快照就可以轻松的得到我们需要的信息,通过时间维度或者字段信息。

DDL里面对于DROP的操作是一个敏感而且模糊的处理,我们可以通过标识DDL类型来进行周期维护,如何确定表被删除了,一定是通过已有的参考依旧才能够分辨出来,MySQL不会主动通过数据字典来告知你。

当然这个列表也可以通过mysqldump的备份来补充,比如我们做mysqldump备份,只备份表结构,其实就几秒钟的事情,我们可以通过dump文件轻松得到一个库的表信息列表。

可以使用如下的脚本命令:

grep -E "^CREATE TABLE|^CREATE DATABASE" devopsdb.sql |sed 's/\/\*\!32312 IF NOT EXISTS\*\///g'|sed 's/IF NOT EXISTS//g'|sed 's/CREATE//g'|awk '{print $1" "$2}'|sed 's/TABLE/--/g'

这个脚本会输出数据库的表列表,格式类似这样的形式:

DATABASE `test`

-- `dept`

-- `emp`

-- `mysql_info`

-- `t`

-- `t1`

-- `t2`

-- `test`

-- `test_data`

-- `tmp`

DATABASE `test2`

-- `test`

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档