将主表 myisam存储引擎改为innodb存储引擎,需要修改哪些mysql相关innodb配置信息?

将主表 myisam存储引擎改为innodb存储引擎,需要修改哪些mysql相关innodb配置信息?

描述:我们线上数据库结构:1主3从,所有的表都是myisam存储引擎,我现在只想把一张主表引擎更改为innodb存储引擎。主表的数据量300W。

问题1:我打算使用gh-ost修改存储引擎,应该没有问题吧?(由于主表中有触发器,所以放弃使用gt-osc修改)

问题2:主表修改完之后,那么肯定需要配置mysql相关innodb配置信息,具体需要哪些配置信息?

问题3:同一个数据库中,既有innodb存储引擎,又有myisam存储引擎,需要注意什么地方,会不会有问题?

参与11

1同行回答

y18511664518y18511664518技术总监长城超云
第一步查看表的存储引擎mysql> show create table test;第二部查看表的数据量mysql> select count(1) from test;第三步方法一:直接更改存储引擎mysql> alter table test engine=innodb;方法二:1、创建个和test同样表结构的表2、test_tmp作为中间结果集mysql> ...显示全部

第一步查看表的存储引擎
mysql> show create table test;

第二部查看表的数据量
mysql> select count(1) from test;

第三步
方法一:
直接更改存储引擎
mysql> alter table test engine=innodb;

方法二:
1、创建个和test同样表结构的表
2、test_tmp作为中间结果集
mysql> insert into test_tmp select * from test;
3、删除原表的数据
mysql> truncate table test;
4、这回更改原表的存储引擎
mysql> alter table tt7 engine=innodb;
5、再把中间结果集的数据导回原表中
mysql> insert into test select * from test_tmp;
6、删除中间表
mysql> drop table test_tmp;

你第二个问题要根据版本定参数配置,低版本和最新版本的配置差别太大,在这里没法给你具体答案。上边的步骤你可以参考。
还有一个数据库中只是某些表改变了存储引擎,不会对整个数据库有什么影响,除非你的应用对这个表有特殊的要求。

收起
金融其它 · 2017-09-13
浏览2330
  • 关于这个问题我还想再说几句,和题主聊了一下,因公司原因,无停机窗口,要在线修改,这个不确定性因素太大,建议大家不管任何原因,做数据库级的操作,已经验证过的跑批除外,都要有一定时间的停机窗口,防止意外发生。
    2017-09-14

提问者

大侠520
研发工程师房产网

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-09-13
  • 关注会员:1 人
  • 问题浏览:2558
  • 最近回答:2017-09-13
  • X社区推广