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

目前线上的环境早已经过百了,备份就是一个重复性的工作,之前做了一版数据库备份任务的自动化调度,可以根据备份时间来重新评估备份时间,算是一个有些技术难度的小技巧。

之后在使用中也发现了一些问题,主要的问题是这个任务的脚本不够通用,只能支持备份,而且不支持单机多实例的的情况,所以在使用中存在一些盲点,最近总算是实现了。这个过程中也发现了一系列的小问题,我总结出一些小的技巧供参考。

1.备份调度策略的优化。

之前的备份是按照一个整体来做备份时间调度的,比如100个实例,我们时间调度的时候,只能是一个时间区间,如果开启了8个并行,那么最多只能有8个任务从0:00开始。类似下面的情况。

但是实际上这些数据库是分布在不同的IDC上面的,所以每个IDC的备份任务开启并行是可以横向扩展的。所以完全可以基于IDC来重新来设定备份的并发调度策略。这样原来是8个并行,2个IDC就可以轻松扩展到16个并行。

2)备份任务的crontab优化

备份任务的crontab如果支持单机多实例,其实对于crontab就是一个挑战,我们做的crontab修改是要备份前镜像,然后修改,如果是单机多实例,很可能这个修改工作是由多个并发进程发起的,那么crontab的镜像内容就是动态变化的,而且很容易被覆盖,最后使用flock的方式来改进

3)备份可视化的改进

之前的备份任务是类似下面的表格形式,其实效果会很模糊。

可以考虑改进成下面的形式,如果通过可视化的改进,整个备份的进度和效果就有了然了。

相关链接: