暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

RadonDB深入学习系列-安装

mysql code tracer 2021-04-25
451

RadonDB深入学习

之前深入学习了一波xenon(MySQL高可用组件),近期打算深入学习一波Radon(MySQL中间件),将每日所学整理成一个系列文章,今天先来个简单的入门。

RadonDB是一个开源、云原生的数据库,支持无限伸缩和性能扩展,支持分布式事务,优秀特性如下:

  • 自动Sharding

  • 支持审计

  • 支持并行:支持并行查询,并行DML,并行DDL

  • 并行CHECKSUM TABLE: 结果同MySQL

  • 分布式事务: Snapshot Isolation隔离级别

  • 分布式关联查询: Sort-Merge Join, Nested-Loop Join

  • 分布式全文索引

  • 多租户

  • 支持Prepared SQL

  • JSON

git地址:https://github.com/radondb/radon

一、安装

下载

  1. git clone https://github.com/radondb/radon

编译安装

首先前提是要有go环境,怎么安装的话自行google一下

  1. cd radon

  2. make build

编译完成以后,会在bin文件夹下生成可执行文件radon

二、配置文件

  1. {

  2. "proxy": {

  3. //元数据保存位置

  4. "meta-dir": "meta/radon-meta",

  5. //对外提供服务端口

  6. "endpoint": ":13308",

  7. //分布式事务二阶段提交

  8. "twopc-enable": false,

  9. //最大连接数

  10. "max-connections": 1024,

  11. //限制最大结果集大小

  12. "max-result-size": 1073741824,

  13. //最大关联行数

  14. "max-join-rows": 32768,

  15. //ddl超时时间

  16. "ddl-timeout": 36000000,

  17. //查询超时时间

  18. "query-timeout": 300000,

  19. //api及多个成员通信端口

  20. "peer-address": ":8080",

  21. //慢查询时间

  22. "long-query-time": 5,

  23. //流式处理内存大小

  24. "stream-buffer-size": 33554432,

  25. //超时连接处理

  26. "kill-idle-transaction": 60,

  27. "autocommit-false-is-txn": false

  28. },

  29. //审计相关

  30. "audit": {

  31. "mode": "N",

  32. "audit-dir": "meta/radon-audit",

  33. "max-size": 268435456,

  34. "expire-hours": 1

  35. },

  36. //这里定义了全局的分库分别的大小

  37. "router": {

  38. "slots-readonly": 4096,

  39. "blocks-readonly": 32

  40. },

  41. //日志等级

  42. "log": {

  43. "level": "INFO"

  44. },

  45. "monitor": {

  46. "monitor-address": "0.0.0.0:13380"

  47. },

  48. //XA事务相关

  49. "scatter": {

  50. "xa-check-interval": 10,

  51. "xa-check-dir": "./xacheck",

  52. "XaCheckRetrys": 10

  53. }

  54. }

三、启动Radon

  1. ./radon -c radon.json > radon.log 2>&1 &

启动以后会报错如下:

  1. 2020/03/02 15:00:28.210378 privilege.go:96: [ERROR] plugin.privilege.update.privilege.error:backends.is.NULL

这个没有关系,因为我们现在还有添加后端数据节点,Radon检测到没有数据节点就会报错

四、添加数据节点

  1. curl -i -H 'Content-Type: application/json' -X POST -d '{"name": "backend1", "address": "127.0.0.1:3306", "user": "xucl", "password": "xuclxucl123", "max-connections":1024}' http://127.0.0.1:8080/v1/radon/backend

添加完成以后,输出如下

  1. HTTP/1.1 200 OK

  2. Date: Mon, 02 Mar 2020 07:02:32 GMT

  3. Content-Length: 0

表示添加成功

五、登陆radon

  1. mysql -h127.0.0.1 -uxucl -pxuclxucl123 -P13308

查看数据库

  1. xucl@mysqldb 15:03: [(none)]> show databases;

  2. +--------------------+

  3. | Database |

  4. +--------------------+

  5. | information_schema |

  6. | mysql |

  7. | performance_schema |

  8. | sys |

  9. +--------------------+

  10. 4 rows in set (0.00 sec)

创建数据

  1. xucl@mysqldb 15:07: [(none)]> create database zst;

  2. Query OK, 1 row affected (0.01 sec)

六、目录结构

在我们之前配置文件中定义的meta-dir位置,在这个位置中,保存了radon相关的一些元数据文件

  1. [root@izbp13wpxafsmeraypddyvz radon-meta]# cat backend.json|jq .

  2. {

  3. "backends": [

  4. {

  5. "name": "backend1",

  6. "address": "127.0.0.1:3306",

  7. "user": "xucl",

  8. "password": "xuclxucl123",

  9. "database": "",

  10. "charset": "utf8",

  11. "max-connections": 1024,

  12. "role": 0

  13. }

  14. ]

  15. }

backend.json保存的是后端节点的信息

  1. cat version.json |jq .

  2. {

  3. "version": 1583132882620481800

  4. }

version.json保存的是版本信息

此外,在meta文件夹下还会存放跟数据库表相关的元数据

  1. [root@izbp13wpxafsmeraypddyvz radon-meta]# ls

  2. backend.json version.json zst

刚刚我们创建的zst的库就以文件夹的形式存放,后续在zst下建的表也会存放在zst这个文件夹下

文章转载自mysql code tracer,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论