当前位置: 首页 > 图灵资讯 > 技术篇> Mysql5.6支持在线修改表结构

Mysql5.6支持在线修改表结构

来源:图灵教育
时间:2023-06-07 09:38:06

根据工业业务,周五提出了研发需求,需要增加核心业务表的字段。努力工作。终于成功了。

总结两条:1. 明白了 tmpdir 目录设置的真正意义。

2. 对5.6在线修改表结构的过程有着深刻的理解。同时,支持在线修改表结构的功能再次得到验证。

放心在线修改,什么pt?-online-schema-change也弱爆,不用那么麻烦了

可直接修改。

具体流程如下:

在修改表结构的过程中,首先备份备份表:

create table bak_pd_info as select * from productinfo.pd_info ; 备份完成后,该表只复制了表记录,不会重建表的索引。 备份完成后18.6.6G,同时,备份会导致从库中延迟所有现象。 备份完成后,将表结构修改为bak_info表。在修改过程中,会发现/ 目录越来越大,最后空间耗尽,与新报错如下: 调整表空间 mysql> set global max_allowed_packet=134217728; mysql> show global variables like '%tmp%'; mysql> set global tmp_table_size=134217728; mysql> set global max_heap_table_size=1024*1024*1024 mysql> rename table bak_pd_info to bk_pd_info; 尽管你想使用更多的内存,减少临时表,但发现32G的临时目录远远不够,当备份表bak_pd_info为18.6G时40分钟后,当数据传输估计为3分之二时,即报告空间满的错误。 mysql 临时表空间位置默认 /tmp 因此,空间不足是主要原因,有两种方法: 1. 增加临时表空间磁盘空间。 mysql 临时表空间位置默认 /tmp 因此,空间不足是主要原因,有两种方法: 1. 增加临时表空间磁盘空间。 2. 修改临时表空间路径,指向更大的空间。 需要重启数据库 本次采用第二种方法: 1. 重启163 tmpdir=/data/mysql 2. 重启172 /173 tmpdir=/data/mysql 166 tmpdir=/data/mysql replicate_wild_ignore_table=productinfo.% 3. 165 162 181 都重启过。 备份pd_info表。 备份pd_info表。 重启161 所有从库都指向162 修改表结构。 ALTER TABLE pd_info ADD prokey VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL mysql> ALTER TABLE productinfo.pd_info ADD prokey VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; Query OK, 0 rows affected (2 hours 55 min 3.24 sec) Records: 0 Duplicates: 0 Warnings: 原表25.3G,使用临时表空间:53G以上。 重原状,重启: 161 162 166 165 172 172 163 181