nas wordpress备案,seo专员简历,logo生成,一个vps 几个wordpress问题
曾经有个客户问题#xff0c;让我们开发不知所措了很久。简单点说就是客户的index周期性的损坏#xff0c;即使全部重建后经历大约1~2周数据update后也会坏掉。导致的直接结果#xff1a;select出来的数据不对。问题很严重。
直接看损坏的index文件看不出什么蛛丝马迹…问题
曾经有个客户问题让我们开发不知所措了很久。简单点说就是客户的index周期性的损坏即使全部重建后经历大约1~2周数据update后也会坏掉。导致的直接结果select出来的数据不对。问题很严重。
直接看损坏的index文件看不出什么蛛丝马迹因为它已经面目全非。所以我们一直想拿到第一条导致update出错的insert、update或者delete.
开始探索
沿着上面提到的思路给力的support写了一个trigger只要每次更新insert、update或者delete数据trigger就调用index检查程序检查index文件是否有问题。客户也比较配合的部署上了但是只过了几天就禁用掉了因为每次检查index文件都耗时巨大直接拖慢了客户business performance。
另寻他路
除了trigger我们还可以出diagnostic build, 基本就是往怀疑的地方加log此种办法耗时耗力先在对应的版本上改代码- 编译 - 发给客户 - 客户部署重启数据库. 一般来往一次耗时一两周而且一次都不一定成功。
后来我又想出一个办法客户发我们问题表同时我们帮客户记录下客户的所有更新直到select结果不对。我们有继承数据index没问题的表在实验室一条条的重复更新客户操作即可。这个办法涉及客户数据取决于他们在不在乎。好在客户不care这些。
BUG
后来我们真的在实验室重现了罪魁祸首竟然是index建在最后一个字段大量更新后就会有问题。看来测试不能放过任何一种情况啊起码得设计三个字段然后所有可以创建index的列的组合都要设计test case。
附加产出
如何记录客户的更新我们有一个replication功能本人负责正常是把更新发给另外一台机器的但也可以暂时不发而是写入一个log文件于是我拿到log文件就拿到了客户的更新。
把log文件中的更新写入表我写了一个replay.py解析log文件中的每一条更新调用数据库接口写入表中。