RocksDB踩坑之路-MySQL从InnoDB升级到RocksDB
参考
背景
生产环境,MySQL数据库为5.7,由于系统配置为8核16G,性能不足以支撑现有业务,尝试将MySQL数据库从InnoDB升级到MySQL 8.0 RocksDB,发现实际性能反而更差,后面将数据库,切换回到MySQL 5.7 InnoDB
。
准备工作
减少碎片化
性能提升
效果
升级成功后,通过观察,发现升级后的性能已经大大提升,但是CPU负载却增加很高。而且配置还从8核16G升级到了16核32G,CPU负载增加后,性能下降了。
出现很多致命缺陷
降级回到InnoDB
由于用mysqldump导出数据库结构后,发现默认使用的是ENGINE=ROCKSDB
。所以,需要用旧数据库的结构,新数据库只导出数据。
bash
mysqldump -t database_name > database_name.20250526.sql
bash
mysqldump --single-transaction --default-character-set=utf8mb4 -h mysql2 --port 3306 -u username -p'******' -t database_name > database_name.20250526.sql
升级步骤
- 停止nginx
- 停止所有服务
- 开始备份数据
- 修改docker文件配置-host改成数据库对应的
- 开始恢复数据
- 同步对比数据库结构
- 新数据库配置项修改
- 业务主流程(云课堂、社区)
停止所有服务
购买示例,验证性能
因为8.0与5.7大字段( varchar(8126)
)冲突。所以,改成MySQL5.7
。
验证只读示例:
升级数据库存储空间
新数据库OK
续费:
再见,不靠谱的ROCKSDB
。
导入数据,坐等数据落库。