公告 我们将会在 2016-01-23 (本周六) 对服务器停机升级

huacnlee · 2016年01月22日 · 最后由 lgn21st 回复于 2016年01月25日 · 13269 次阅读

我们将会在 2016-01-23 对服务器升级,目的是将 Ruby China 后端的数据存储转换到 PostgreSQL,由于有一系列数据迁移过程,需要一段时间,预计两小时。

稍后我们会通过 Twitter 以及 微博 官方账号告知发布的情况。

此外如果大家想了解我们是如何将 Ruby China 的代码从 MongoDB 迁移到 PostgreSQL 的,可以访问 ruby-china/ruby-china!539 这个 PR 的页面查看变更内容。

特别感谢:@rivid 实现 Mongoid 到 ActiveRecord 的迁移重构工作!

  • 本次发布负责人 @lgn21st
  • 开始时间:2016-01-23 09:00

本次发布相关链接

https://ruby-china.org/topics/28754 https://github.com/ruby-china/ruby-china/pull/539

不要问为何换数据库!!!

只是希望更正统的用 ActiveRecord,以便每次 Rails 发布新版本的时候减少升级成本

实际上 MongoDB 以及 Mongoid 陪伴 Ruby China 整整 5 年的过程,一直稳定,无任何故障。

资瓷!

4 楼 已删除

赞,再提 PR 就不用花时间学习Mongoid👏

居然换 Postgre 了!!!之前一直没想着用 Ruby China 来架设论坛,就是因为 MongoDB 这块不是很熟悉 这下太好啦哈哈哈哈哈哈

换 PG 了,资瓷!

华顺的迭代真是好勤快啊。

#9 楼 @xiaoronglv 状态好的时候,我还是挺勤奋的,主要是之前就想这么做,正好 @rivid 帮忙解决了主要的问题,不用太操心一点一点的改造了

这迭代速度真的是快到难以置信!

赞!迁移数据库很累人的,真是勤奋!@huacnlee @rivid Rails 还是使用 ActiveRecord 顺手,Mongodb 不像看上去那么美女,这次迁移是值得的。

我们自己做过 Mongodb 到 MySQL 的迁移,过程十分痛苦,而且到现在还没有完全做完。

坐等,PostgreSQL 个人觉得是目前数据库首选,在社区、性能、功能上都是很优秀的

#10 楼 @huacnlee #13 楼 @vincent #15 楼 @embbnux

正好公司要上一个开发者社区,觉得还是 RubyChina 最合适,但是 mongoDB 不熟悉啊,也没时间去翻文档,PostgreSQL 比较熟悉,而且有不少人已经做了这样的迁移,就一鼓作气迁移过来用了。换成 PostgreSQL 比换成 MySQL 要简单,PostgreSQL 支持的数据类型很多,性能也很好。现在新项目,PostgreSQL 是首选。PS,@huacnlee 效率好高

#16 楼 @rivid 赞 我们迁移到 MySQL 是因为其它项目都用的是 MySQL,运维不熟悉 PostgreSQL,如果可以自由选择,也是倾向 PG 的。 另外,迁移比较痛苦是因为数据量很大,几张表有千万到亿级,不能在迁移过程中长时间宕机。 所以迁移的步骤是:

  1. 双写,同时写入 mongodb 和 mysql,从 mongodb 读;
  2. 双写,从 mysql 读;
  3. 只从 mysql 读写,移除 mongodb。
    这样有一个好处是,如果 2 有问题,可以随时回滚到 1,中间没有数据丢失。

赞,Rails 接 PostgreSQL 的确比 MongoDB 要省心。感谢勤奋的维护者做了这样的迁移。

已经好了吗

迁移脚本有错,失败放弃了,还得找时间重新试一下

#21 楼 @huacnlee 😂😂😂😂😂😂 跑过来能打开,我还以为完成了呢

topics 页还没恢复。 说话间就恢复了。

#21 楼 @huacnlee 把错误发出来研究研究?

#21 楼 @huacnlee 那个脚本其实我看了很久,感觉逻辑蛮绕的。

无故障不代表用的爽,PG,ActiveRecord +1

竟然花这么大的力气改,必须点赞 :plus1:

赞,大概看了 diff,感谢辛勤的管理员!

刚才看到维护提示,现在好了,是再次尝试迁移了吗?

#29 楼 @kgen 尝试迁移了两次,最后都 rollback 了。

第一次,遇到一个包含 null string 的回复导致数据迁移被中断 https://ruby-china.org/topics/28213#reply6 第二次,遇到数据迁移成功后所有 avatar 显示不正常的问题

计划今天晚些时候在尝试一次。

#30 楼 @lgn21st 详细说说头像的问题,是默认头像那个没法出来?还是 UpYun 的用户头像无法出来?

#31 楼 @huacnlee 是 UPYun 的头像没有出来,我对比了导入前后 User 的数据,发现 PostgreSQL 这边所有 avatar 字段均为 nil,从表象看,应该是 users 表的 avatar 字段没有妥善的复制过来。

#33 楼 @lgn21st 看代码是利用了 Carrierwave 插件,这个插件会覆盖 avatar= 一系列方法,可以采用 SQL 直接复制

我之前都是用 github 登录的,结果这次迁移之后发现用 github 登录就会成为一个另外一个用户,第 8181 位会员。

Mongo 真是坑啊。pg 大法好

#35 楼 @alphaliu 我回滚了,在我这里看到的不是 8181 号会员,是 861 号,你现在看到的自己是 8181 号会员么?

期待完成迁移后,能写一个性能对比哈

已经完成 PG 的数据迁移,请大家帮忙测试一下看看有没有问题。

慢的令人发指啊

打开页面很慢...

打开页面慢是因为缓存都被清除了吧,很快就好了

#37 楼 @lgn21st 现在无法用 github 登录了。服务访问异常 :( 我用用户名登录的话是 861 号,之前用 github 登录就是 8181

#43 楼 @alphaliu 这个问题发现了,我们尽快修复。

#43 楼 @alphaliu 我把 8181 那个绑定给你删掉了,现在 GitHub 登陆能自动对应上你这个账号

#45 楼 @huacnlee 8188 那个也是绑定到我的 github 的吗?没迁移数据之前我用 github 登录都是对应到 861 这个。 @lgn21st 现在对应没问题了。

#46 楼 @alphaliu  因为我手动修改好了

#44 楼 好长时间没来,issue feature 分不清我的错

而且我的头像挂了

#49 楼 @palytoxin 你确定账号对的?另外之前是在 Ruby China 设置界面上传过头像的么?

#50 楼 @huacnlee 账号是我本人,我以前穿过头像。

#51 楼 @palytoxin 不好找到原因了,其他人都有的,再传一个呗

#52 楼 @huacnlee 头像无所谓,说 mini-profiler 的事情,我好长时间没来,我的错 最主要的是我很卡

需要 登录 后方可回复, 如果你还没有账号请 注册新账号