这开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请微信联系 liuaustin3 ,(共1950人左右 1 + 2 + 3 + 4 +5) 4群(410+ 关闭自由申请,新入群的将默认分配达到5群),另欢迎 OpenGauss 的技术人员加入。
最近到了年根地下,一切都在求稳,可惜天不遂人愿,问题还是很多而且有些都比较......

问题 数据归档后,数据列错位的问题
这个问题比较有意思,基于公司的数据库的量数据的量都比较多的情况,定时的对数据进行归档时必要的工作,基于能自动化的不手动,能严谨的工作一定要更严谨,所以我们采用了 pt-archiver 的方式来进行这个工作,一开始是没有问题的,将一个表的数据,归档到归档表中,这样做了几天,是没有问题的,但某天就被反馈,在归档的表中列中的值错位了,应该是第3列的,跑到了第5列,这就奇怪了,如果是错误,那么都应该是错误的,这里的错误是随机的,并且在体现上,并量并不是很大。
所以我们陷入了一个问题的分析过程
1 数据库归档表的错误,不是大范围的,而是小范围的列错位
2 基于我们在归档的时候,产生了归档的记录文件,我们还是有据可查
到底这个数据是否就是错位的
3 软件的版本的是否有问题,有bug 导致这些问题
随即我们进行了分析
1 在归档中记录文件中的历史记录中,的确在哪个文件中的位置也是错误的
2 软件并未有明显标记有BUG FIX 在这方面有一些记录
3 的确出现问题的数据是极个别的
我们确认了错误存在的真实性,并且确认了这些错误的确是在数据流转时产生的,那么下面就需要来看看到底是怎么产生的,在继续分析下去,发现出现问题的数据,在字段文字的末尾都存在换行符,而没有换行符的就不会出现问题。
最终定位问题,凡是在字段值中有换行符的,都会产生列偏移的问题。
问题定位后,剩下的就是怎么处理的问题
1 应用程序中来修改由于自己的问题,导致的字段中带有换行符的问题
2 数据库这边忽略这个数据类型,因为这个数据有换行符的只存在与某种业务类型,我们忽略他即可,后续等业务自行处理这些数据
3 数据归档后,进行数据的修复
经过商议,最终的结果是2 ,我们归档过滤这些类型的数据,而等待他们来修复数据,等修复数据后,在进行数据的归档。
通过这个问题,我们可以总结如下信息
1 我们常用的命令以及常见的工作方法,并不是一直不会出问题,出问题要进行有效的分析,针对命令本身要有严谨的操作的意识,比如pt-archiver 可以不记录操作的数据,但我们并未这样做,这给我们后面解决问题,有基础数据提供的支持
2 遇到问题,能分析出具体的问题,我们应该往一些有特性的部分,如数据本身去想,而不应该去往命令方面去想,这也是后续我需要总结和反思的
3 举一反三,以后类似的问题,或类似的事情,我们的解决思路,分析的思路都能更清晰的进行,更快速的进行问题的分析和处理。


被折叠的 条评论
为什么被折叠?



