- 项目背景:
- 公司原有的架构:一个展示型的网站,LAMP,MySQL5.1.77版本(MYISAM),50M数据量。
- 小问题不断:
- 表级锁:对表中任意一行数据修改类操作时,整个表都会锁定,对其他行的操作都不能同时进行。
- 不支持故障自动恢复(CSR):当断电时有可能会出现数据损坏或丢失的问题。
- 解决方案:
- 提建议将现有的MYISAM引擎替换为Innodb,将版本替换为5.6.38
- 如果使用MYISAM会产生”小问题”,性能安全不能得到保证,使用innodb可以解决这个问题。
- 5.1.77版本对于innodb引擎支持不够完善,5.6.38版本对innodb支持非常完善了。
- 实施过程和注意要素
- 备份生产库数据(mysqldump)
[root@db01 ~]# mysqldump -uroot -p123 -A --triggers -R --master-data=2
>/tmp/full.sql
准备一个5.6.38版本的新数据库
- 对备份数据进行处理(将engine字段替换)
[root@db01 ~]# sed -i 's#ENGINE=MYISAM#ENGINE=INNODB#g' /tmp/full.sql
- 将修改后的备份恢复到新库
- 应用测试环境连接新库,测试所有功能
- 停应用,将备份之后的生产库发生的新变化,补偿到新库
- 应用割接到新数据库