关于数据迁移的一次小故障
由于网站访问量不大,公司原来的数据库和网页程序放在同一台服务器上,随着服务器的网站推广的强度增大,网站的访问量也快速增长。因此昨天晚上将数据库迁移到单独的服务器上,并将mysql 5.1.50的版本升级到mysql 5.5.18。
采用的是先搭建mysql 5.5,然后从5.1.50上同步数据,再将网页的数据库配置更改到新的服务器上。这个过程本身没有任何问题,切换后一切正常。第二天,有人反映一个地方搜索出不来数据。抓取那个页面的SQL一分析,发现那个表上采用的全文索引来搜索数据,把该SQL拿到旧的服务器上执行可以出来数据。因此推测是全文索引的配置参数ft_min_word_len不一致导致,为了验证个问题分别在新的数据库服务器和旧的服务器上执行SHOW VARIABLES LIKE 'ft_min_word_len',发现旧的服务器该参数为1,新的为4。而用户查询的索引字为2个字符,因此查询不到。一查看配置文件,发现新的服务器忘记配置该参数了。太大意了。
知道问题了,就该想办法修复了,有一点需要注意,更改了ft_min_word_len参数以后需要重建全文索引,修复步骤如下:
1、备份my.cnf配置文件
2、更改my.cnf配置文件,添加如下配置
ft_min_word_len = 1
3、重启mysql
4、登录mysql执行如下操作(需要找出所有含有全文索引的表):
USE `phpcmsv9` ;
REPAIR TABLE `v9_search` QUICK;
REPAIR TABLE `v9_search_keyword` QUICK;
然后执行全文搜索,OK了!
总结:这个故障是由于配置mysql配置文件的时候不小心造成该配置项的遗漏造成的,作为DBA,工作中还是需要细心细心再细心,多检查,养成细心的好习惯,避免类似低级错误出现。