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

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

我们将会在 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 年的过程,一直稳定,无任何故障。

共收到 55 条回复

资瓷!

手工点赞 +1

资瓷!

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 的用户头像无法出来?

good luck

#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的事情,我好长时间没来,我的错 最主要的是我很卡

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