Tag Archives: upgrade

有效的升级 MySQL 库中所有表的字段属性

By | 2016/06/29

背景介绍 本文基于一个 discuz 论坛表的需求描述 — 将论坛中所有表为 mediumint(8) 的字段升级为 int(10), 以存储更大的用户 id 信息; 通过批量升级字段的方式也适用于其它相关的需求. 顺便吐槽下 discuz 这么多年以来对基础表的优化接近于无, 在用户较多或访问较频繁的场景下, 基础表的结构依然缺乏比较完善的设计. 步骤 考虑到论坛运行一段时间后, 一些表会比较大, 如果业务需要持续运行的话, 不太适合直接 alter table 的方式更新表, 下文会介绍使用 percona 的工具完成修改, 所以在整个流程中分为以下步骤操作: 找出论坛中数据较多的表; 生成相关的 DDL sql 语句, 忽略较大的表; 执行 DDL sql 语句; 如果表较大, 使用 pt-online-schema-change 工具在线修改表结构; 如果表加大, 而且没有主键或唯一键, 则只能手工执行 alter 操作; 1. 找出论坛中较大的表, 可以通过 information_schema.tables 完成: mysql>… Read More »

mysql_upgrade 升级错误出现 table doesn’t exist 错误整理

By | 2016/02/29

从 MySQL 官方的 5.1.48 版本升级到 Percona 5.1.73 版本, 在使用 mysql_upgrade 的时候出现一些错误, 该原因可能为innodb表文件丢失或损坏, 或使用了不正确的方式删除表. 错误信息如下所示: [root@cz ~]# cd /opt/Percona-Server-5.1.73-rel14.12-624.Linux.x86_64/ [root@cz Percona-Server-5.1.73-rel14.12-624.Linux.x86_64]# ./bin/mysql_upgrade -S /export/mysql/node3307/data/s3307 -p –verbose … Repairing table test.蔢^ Error : Table ‘test.蔢’ doesn’t exist status : Operation failed test.蔢^ Error : Table ‘test.蔢’ doesn’t exist status : Operation failed test.蔢^ Error : Table ‘test.蔢’… Read More »

MySQL 升级说明

By | 2014/10/08

MySQL 升级说明 1.为什么升级 在没有充分测试前, 升级MySQL,尤其是主版本升级会存在很大的风险, 可能系统表或存储引擎组织方式做了更新, 也可能是参数或默认值信息做了改动, 这些都可能引起应用的中断甚至Server端的崩溃; 不过升级的好处也是很大的,比如想使用新版的功能特性,更好的性能,对固态盘的支持或者已经修复的bug等; 当然一般来说bug和性能问题会促使我们做一些小版本或大版本的升级, 在没有遇到这两个问题之前, 个人不建议对正在稳定使用的MySQL进行升级, 即便新版有更好的功能或性能。 2.升级的方式 我们通俗的将版本升级分为主版本升级(大版本升级)和次版本升级(小版本升级): MySQL 5.1 升级到 MySQL 5.5 称为主版本升级; MySQL 5.5.23 升级到 MySQL 5.5.33 称为次版本升级; 主版本之间的改动一般表现为系统表或参数信息的变更, 索引或行记录的组织方式也可能出现变更;次版本之间的改动一般表现为bug的修复, 同样接口或功能之间性能方面的提升。从这方面来看升级一般分为两种方式: