快速实现wordpress迁移到RadonDB上

作者: 吴炳锡
作者介绍: 知数堂联合创始人及MySQL高级讲师,3306π社区联合创始人,腾讯TVP成员 。
本文大概5500字,阅读大概需要15分钟,建议电脑前阅读 。大纲如下:
  • 概述
  • 使用Radon attache功能的好处
  • 基本环境描述
  • 把wordPress/ target=_blank class=infotextkey>WordPress库加入到Radon中
  • 利用wordpress体验Radon的透明分库分表
  • 总结
可以关注知数堂腾讯课堂上我分享的RadonDB相关视频 。
最近发现RadonDB在特性中引入一个新特性:Single table 到分区表快速转换,另外还引进了一个优秀的特性,把现有的MySQL库直接attach到Radon下面 。看到这两个特性真是太赞了 。可以非常方便用户实现原来的单表,快速变成拆分表,一条命令搞定 。具体的issue参考:https://github.com/radondb/radon/issues/436 而且这个特性会在1.0.8这个版本发布 。下面我们一块来体验一下吧 。该文档可以用于先看看整体思想上有一个认识后再行动 。
利用Radon attach获得的好处
  • 连接池外置 。如果你的应用程序没有连接池,或是MySQL上挂了上千个以上的连接时又不想让MySQL上因为挂连接而影响性能,那就可以考虑利用Radon做外置的连接池 。例如:在原来老的MySQL上挂一个Radon,所有的表都是Single表模式,现的Radon只是对SQL解析获取到表名,直接传递给后端,后面基本就是TCP中转操作:从后端获取结果返回给前端 。修改:"max-connections": 1024 即可 。
  • 利用Radon实现原来的老的项目和日志数据或是海量数据混跑 。利用attach功能挂载原来的MySQL,把大表迁移到Radon中 。为了求稳,你还可以通过老库访问原来除了大表外的其它表,对于超级大表可以通过Radon访问,当然Radon也可以访问挂载上的MySQL.
  • 可利用到Radon提供的 审计,透明自动拆分功能 。
基本环境及架构描述
这里为了更清楚整个过程,采用全部自建环境:单机多实例环境 安装:LAMP环境,可以用运行wordpress确认,在单库环境下是正常的 。wordpress使用数据库端号:3306端口 。为了看来了来效果,我在增加一个实例:3307 端口的数据库 。
快速实现wordpress迁移到RadonDB上

文章插图
这里只是一个功能测试,所以不在给MySQL做高可用,如果需要高可用可以搭建xenon环境 。Radon安装,可以看到前面章节,启动一个空的radon:
  •  
./bin/radon -c ./radon.json >radon. log2>& 1&Radon配置如下
  1. {
  2. "proxy" : {
  3. "endpoint" : ":3316" ,
  4. "meta-dir" : "bin/radon-meta" ,
  5. "peer-address" : ":8080"
  6.  
  7. "audit" : {
  8. "audit-dir" : "bin/radon-audit"
  9. },
  10. "log" : {
  11. "level" : "INFO"
  12. },
  13. "monitor" : {
  14. "monitor-address" : "0.0.0.0:13380"
  15. }
  16. }
添加MySQL到Radon中,在Radon进程所在的机器上执行:
  1. curl - i - H 'Content-Type: Application/json' - X POST - d '{"name": "backend1", "address": "192.168.0.2:3307", "user":"wubx", "password": "wubxwubx", "max-connections":1024}' http : //127.0.0.1:8080/v1/radon/backend
参数说明:
  1. {
  2. "name" : 后端节点命名,要求唯一,
  3. "address" : 后端 MySQL 连接串,
  4. "user" : MySQL 连接用户名,
  5. " password ": 数据库连接密码,
  6. " max - connections ": 最大支持多少个连接连后后端DB中, 加入Radon后也可以启到一个连接池的作用 。
  7. }
整个环境节架构如下:
快速实现wordpress迁移到RadonDB上

文章插图
环境确认:博客链接3306端口,确认wordpress工作正常 。
把wordpress库加入到Radon中
  1. mysql - h 192.168 . 0.2 - P3316 - uwubx - pwubxwubx
  2. mysql > radon attach ( '192.168.0.2:3306' , 'wubx' , 'wubxwubx' );
观察日志输出:
  1.  
  2. ...
  3.  
  4.  
  5.  
  6.  
从日志中可以看出来,Radon把原库直接挂载到Radon下面,把原始3306库下的wubx库下表注删到radon下面,同时把配置写到:bin/radon-meta/backend.json & bin/radon-meta/wubx/ 这个目录 。同时也在3307两个原始节点上建出来: wubx库(日志:frm.write.database[db:wubx]),但没有表 。这里看一下backend.json内容:


推荐阅读