关于碎片整理的问题

来源:6-6 全量热备份-常见命令

小小同学William

2019-01-02

一个表只有两个字段,人工造了2千万的数据,数据空间文件(ibd)有 1.2G

在 navicat 中试了几次去执行 ALTER TABLE bigdata ENGINE=InnoDB; 最后都卡死了(等待至少15分钟以上没反应),得强制关闭 navicat 才行。

写 java 程序去执行也是一直不返回结果,像假死状态一样。

这种情况正常吗 ?

写回答

2回答

qq_坚持v_0

2019-01-04

1 ,在test库上面建立一个临时表,表结构跟600W的纪录的表结构一样,只是engine=innodb
2, 将600W纪录导入到临时表里面
3,在原表上建立触发器,同步数据到临时表里面
4, 观察一段时间,看原表与临时表数据是否一致
5 ,观察完毕,稳定后,执行rename table xxx.tbname to test.tbname_old_myisam;rename table test.tbname to xxx.tbname; 底切换过来,当然这个过程会有2秒的down time
---------------------
作者:黄杉
来源:CSDN 

mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件"  ==>选择已存在的数据

触发器添加新加入数据

0
0

神思者

2019-01-02

alter table会锁表,数据越多,锁表时间越长。那在运营中就不能改表结构了吗?当然可以,只是需要利用一个神器,percona tookit包含了一个pt-online-schema-change的小工具,它能在运营中修改表结构,你可以百度一下

0
0

MySQL数据库集群-PXC方案,解决数据库领域疑难杂症

学习PXC,打造高价值的MySQL集群

511 学习 · 217 问题

查看课程