快速实现wordpress迁移到RadonDB上( 三 )

  • },
  • {
  • "table" : "wp_posts_0032" ,
  • "segment" : "2048-2112" ,
  • "backend" : "backend1" ,
  • "listvalue" : ""
  • },
  • ...
  • {
  • "table" : "wp_posts_0063" ,
  •  
  • "backend" : "backend1" ,
  • "listvalue" : ""
  • }
  • ],
  • "auto-increment" : {
  • "column" : "ID"
  • }
  • }
  • 从以上定义来看 wp_posts以ID用HASH的方式给给拆分成64个物理表,实质上拆分成了4096个slot, 每个物理子表接受一个区间的slot服务,并完美的迁移到Radon集群下面节点上,如果有多个Backend,该动作会把拆分后的表均匀的分到其它节点上,在joins查询各方面完美 。限于篇幅问题,这里不再展开 。如果对于拆分表后SQL是怎么运行的有兴趣,可以连接入Radon中,运行: explain 具体的SQL看一下 Radon SQL改写 。
    这里其实可以有一个大胆的尝试,利用attach功能,把小表跑在attach节点上,大表跑在Radon拆分的节点,然后加多个attach节点,这样下面整体的可管理性更强 。这个方案需要进一步测试和官方确定是不是可以用 。单个attach上去的节点也有点Radon中单独建的Single table作用 。
    特别注意事项点如果把现有的业务数据库直接加入到Radon中,原来的DB不要在做为Backend加入了 。操作上就象上面操作,直接attach上去,就可以使用了,就行 。
    总结
    通过本案例可以看出来,Radon对于现有项目迁移到分布式环境有着不错的支持方案,对于SQL丰富度支持,也不错,对于wordpress的SQL基本可以原生不动的迁移过来,可以说Radon对SQL的支持复杂度也上了一个新台阶 。另一方面,对于MySQL一些内置函数,支持不友好 。从Radon代码上看,Radon对于支持的指令都是严格处理,拿一个show table status; 这个指令的处理,一般的中间件,就是直接传到后端第一个节点上,获取数据返回就ok了,但Radon的处理是把这个请求会发到后端所有的节点,然后把结果进行合并后,返回,这点上感觉Radon做事上是力求正确 。不是单纯的兼容 。所以最后,看到Radon在github开源项目上新的feature也都比较让人激动,听说这些功能也是一些互联网公司在免费使用Radon后给官方提需求,青云的小伙伴认真的把这些需求也加到了issue中,排期进行 。据了解,他们也非常欢迎大家提的需求 。个人的另一个感受,Radon代码风格很爽,可以研究一下Radon的代码,学习一下利用golang开发MySQL中间件:) 。

    【快速实现wordpress迁移到RadonDB上】


    推荐阅读