RadonDB深入學習系列-安裝
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
一、安裝
下載
- git clone https://github.com/radondb/radon
編譯安裝
首先前提是要有go環境,怎么安裝的話自行google一下
- cd radon
- make build
編譯完成以后,會在bin文件夾下生成可執行文件radon
二、配置文件
- {
- "proxy": {
- //元數據保存位置
- "meta-dir": "meta/radon-meta",
- //對外提供服務端口
- "endpoint": ":13308",
- //分布式事務二階段提交
- "twopc-enable": false,
- //最大連接數
- "max-connections": 1024,
- //限制最大結果集大小
- "max-result-size": 1073741824,
- //最大關聯行數
- "max-join-rows": 32768,
- //ddl超時時間
- "ddl-timeout": 36000000,
- //查詢超時時間
- "query-timeout": 300000,
- //api及多個成員通信端口
- "peer-address": ":8080",
- //慢查詢時間
- "long-query-time": 5,
- //流式處理內存大小
- "stream-buffer-size": 33554432,
- //超時連接處理
- "kill-idle-transaction": 60,
- "autocommit-false-is-txn": false
- },
- //審計相關
- "audit": {
- "mode": "N",
- "audit-dir": "meta/radon-audit",
- "max-size": 268435456,
- "expire-hours": 1
- },
- //這里定義了全局的分庫分別的大小
- "router": {
- "slots-readonly": 4096,
- "blocks-readonly": 32
- },
- //日志等級
- "log": {
- "level": "INFO"
- },
- "monitor": {
- "monitor-address": "0.0.0.0:13380"
- },
- //XA事務相關
- "scatter": {
- "xa-check-interval": 10,
- "xa-check-dir": "./xacheck",
- "XaCheckRetrys": 10
- }
- }
三、啟動Radon
- ./radon -c radon.json > radon.log 2>&1 &
啟動以后會報錯如下:
- 2020/03/02 15:00:28.210378 privilege.go:96: [ERROR] plugin.privilege.update.privilege.error:backends.is.NULL
這個沒有關系,因為我們現在還有添加后端數據節點,Radon檢測到沒有數據節點就會報錯
四、添加數據節點
- 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
添加完成以后,輸出如下
- HTTP/1.1 200 OK
- Date: Mon, 02 Mar 2020 07:02:32 GMT
- Content-Length: 0
表示添加成功
五、登陸radon
- mysql -h127.0.0.1 -uxucl -pxuclxucl123 -P13308
查看數據庫
- xucl@mysqldb 15:03: [(none)]> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sys |
- +--------------------+
- 4 rows in set (0.00 sec)
創建數據
- xucl@mysqldb 15:07: [(none)]> create database zst;
- Query OK, 1 row affected (0.01 sec)
六、目錄結構
在我們之前配置文件中定義的meta-dir位置,在這個位置中,保存了radon相關的一些元數據文件
- [root@izbp13wpxafsmeraypddyvz radon-meta]# cat backend.json|jq .
- {
- "backends": [
- {
- "name": "backend1",
- "address": "127.0.0.1:3306",
- "user": "xucl",
- "password": "xuclxucl123",
- "database": "",
- "charset": "utf8",
- "max-connections": 1024,
- "role": 0
- }
- ]
- }
backend.json保存的是后端節點的信息
- cat version.json |jq .
- {
- "version": 1583132882620481800
- }
version.json保存的是版本信息
此外,在meta文件夾下還會存放跟數據庫表相關的元數據
- [root@izbp13wpxafsmeraypddyvz radon-meta]# ls
- backend.json version.json zst
剛剛我們創建的zst的庫就以文件夾的形式存放,后續在zst下建的表也會存放在zst這個文件夾下。