这是学习笔记的第 1780篇文章
在数据库运维中, 有一种类型的表需要格外重视,在Oracle中可能是分区表,在MySQL中更多是日期表,其实无论哪种形式,他们的属性是相通的,属于周期表。这里就会涉及两类维护,一类是创建,一类是清理。对于变更来说,其实和其他的表类型是相通的,就此不再赘述。
周期表有一个问题那就是如果业务同学提出扩展表,比如我们可以创建一个月的表或分区,那么如果一个月之后,我们忘记了,业务同学也忘记了扩展,那么麻烦就来了,这个信息没有人知道。
同理数据清理也是类似,如果我们需要根据业务需求删除一周前的数据,如果我们忘记了,或者业务同学忘记了,那么这个事情就很麻烦了,所以这个可以通过统一的配置来对接。
或者说,这属于数据运维的一个专门入口,至于定时的执行是crontab还是celery等,其实都可以的。
对于周期表的创建和数据清理,我做了初步的设计。也是后续作为一种数据运维场景的典型。
数据周期表创建
集成配置入口来定义数据的周期策略
建表模板需要配置页面,建表的元数据信息可以先存储下来,形成元数据管理
元数据标签属性来定义
作为应用监控巡检
作为crontab来定期执行
应用场景:
主从切换之后,主库的crontab能够在从库生效
延伸:开通防火墙权限,主库开通的权限在从库端也开通
后续可以回收应用端的创建表权限和删除表权限
预备条件:
主从关系
MHA高可用信息管理
数据清理
定义数据保留周期
数据清理
数据备份保留策略,下沉到HDFS
作为crontab来定期执行
应用场景:
周期表可以根据时间维度来删除
普通业务表的数据删除也可以支持,需要根据业务维度来定制删除逻辑
主从切换之后,删除任务可以切换到从库端执行
能够及时提炼出一些大表信息,如果存在碎片,可以早期发现
预备条件:
从库端需要保证是read only状态