oschina 实施 MyISAM 向 InnoDB 迁移的计划

红薯 发布于 2011/02/23 13:47
阅读 1K+
收藏 10

春节期间,我将数据库升级到 5.5.8 GA 版本,但在将几个关键表改成 InnoDB 的时候遇见了严重的问题,导致系统宕机1个多小时。

但是随着每天互动的数据越来越频繁,改 InnoDB 避免表锁的问题更加迫切了,但这次需要慎重处理,因而制定以下流程:

 

本文档主要记录 oschina 从 MyISAM 迁移到 InnoDB 的测试过程和实施过程

[测试阶段]

1. 从 PowerDesigner 导出建库脚本 osc_db_strut.sql,不指定任何存储引擎 (OK)

2. 使用 MySQL 默认的存储引擎 InnoDB 建立新测试库 osc_test,并验证说建表的类型是否 InnoDB (OK)

3. 使用 mysqldump 的 -t 参数从真实数据库中导出数据 (不包含建表语句)

4. 将输入导入新建的 osc_test 库中
    如果导入有误,可能是 PD 模型中有不同步的地方,检查并进行修正,然后从第1步重新开始
   
5. 配置 oschina 测试平台使用 osc_test 数据库,并启动运行
    如出现无法连接数据库,检查连接帐号的权限问题
   
6. 多人并发测试 oschina 测试平台
    解决测试中出现的任何问题

7. 将 osc_db_strut.sql 提交到版本控制库中


[实施阶段]

!!!实施阶段必须在测试阶段完全通过的情况下才能进行!!!

1. 在真实平台的数据库上创建新库 oscdb2
    设定好可访问用户的权限

2. 从SVN中checkout出 osc_db_strut.sql 并在 oscdb2 库中建表
   
3. 挂出系统正在维护中的提示页面(修改 502.html 内容,并停止Tomcat即可)

4. 使用 mysqldump -t 导出原有数据库(oscdb)数据(不包含表结构)到 oscdb.sql 文件

5. 导入数据到新建的库 oscdb2

6. 修改oschina应用中的数据库连接配置到oscdb2

7. 启动 tomcat 进行全面测试

 

 

至于什么时候执行这个迁移计划,还得看测试的结果再说。

加载中
0
易水西风
易水西风

哦哦,虽然我是搞WEB的,但对这些不怎么懂,鸭梨很大,深感惭愧

0
cuilk
cuilk

建议:

1、系统升级失败怎么办?(回滚计划)

2、测试数据怎么办?(保留OR删除)

3、数据库导入导出的这些时间大概是多少?(制定升级的时间安排计划)

4、数据库建账号,环境配置这些操作可以实现做好,实施的时候只需要做导入导出库即可。

0
鉴客
鉴客

引用来自#3楼“cuilk”的帖子

建议:

1、系统升级失败怎么办?(回滚计划)

2、测试数据怎么办?(保留OR删除)

3、数据库导入导出的这些时间大概是多少?(制定升级的时间安排计划)

4、数据库建账号,环境配置这些操作可以实现做好,实施的时候只需要做导入导出库即可。

多谢, 记下了:)

0
Google
Google

等你迁移完后学习经验

0
红薯
红薯

数据库改成 InnoDB 后再次出现春节期间遇见的问题!!!!!

0
宏哥
宏哥

一开始如果用postgres就没有这些麻烦了

0
ValueError
ValueError

引用来自#8楼“宏哥”的帖子

一开始如果用postgres就没有这些麻烦了

貌似 pg <==> mysql 之前迁移成本很大。。

听说 MariaDB 引擎和 Percona 引擎不是都支持事务的吗,那应该也是行锁吧?

想问下红薯叔为何选择 InnoDB 呢?

0
红薯
红薯

引用来自#9楼“TonySeek”的帖子

引用来自#8楼“宏哥”的帖子

一开始如果用postgres就没有这些麻烦了

貌似 pg <==> mysql 之前迁移成本很大。。

听说 MariaDB 引擎和 Percona 引擎不是都支持事务的吗,那应该也是行锁吧?

想问下红薯叔为何选择 InnoDB 呢?

这两个版本自己没经过大规模的使用过,不敢尝试

0
关注
关注

MariaDB 引擎和 Percona 引擎都不错,不过我测试的结果是:percona更好一点,性能更高。

返回顶部
顶部