栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

rqlite

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rqlite

rqlite 1 定义

rqlite是一个易于使用的轻量级分布式关系数据库,它使用SQLite作为其存储引擎。rqlite 部署简单,操作非常简单,其集群能力为您提供容错和高可用性。

github地址:
https://github.com/rqlite/rqlite
下载地址
https://github.com/rqlite/rqlite/releases

2 特性
  • 非常容易部署,无需单独安装 SQLite。
  • 完全复制的生产级 SQL 数据库,具有对 SQLite全文搜索和JSON 文档支持的完全访问权限。
  • 生产级分布式共识系统。
  • 一个易于使用的HTTP(S) API。还可以使用命令行界面,以及各种客户端库。
  • 节点发现和自动集群的多种选项,包括与 Kubernetes、Consul、etcd 和 DNS 的集成,允许动态创建集群。
  • 广泛的安全和加密支持,包括节点到节点的加密。
  • 读取一致性级别的选择,并支持选择写入性能而不是持久性。
  • 可选的只读(非投票)节点,可以为系统增加读取可扩展性。
  • 支持事务
  • 热备份,以及直接从 SQLite 加载。
3 原码编译 3.1 搭建go语言环境
# 1 下载go语安装包(由于rqlite编译需要1.16以上版本,因此下载版本必须大于1.16)
wget https://dl.google.com/go/go1.16.2.linux-AMD64.tar.gz --no-check-certificate

# 2 解压到系统路径
tar -C /usr/local -xzf go1.16.2.linux-AMD64.tar.gz

# 3 设置环境变量
## 3.1在/etc/profile文件中加入如下
export PATH=$PATH:/usr/local/go/bin
## 3.2 刷新环境变量
source /etc/profile
3.2 rqlite编译

rqlite编译需要编译如下3样东西

rqlited:rqlite服务端程序
rqlite:rqlite客户端程序
rqbench:rqlite测试工具

# 1 下载rqlite源码包
https://github.com/rqlite/rqlite/releases
rqlite-7.5.1.tar.gz

# 2 解压源码包
tar -zxvf rqlite-7.5.1.tar.gz

# 3 编译rqlited
cd $path/rqlite-7.5.1/cmd/rqlited
go build -o rqlited

# 4 编译rqlite
cd $path/rqlite-7.5.1/cmd/rqlite
go build -o rqlite

# 5 编译rqbench
cd $path/rqlite-7.5.1/cmd/rqbench
go build -o rqbench
4 rqlite安装部署 4.1 单机版本安装 4.1.1 启动rqlite服务
# 启动命令
/opt/rqlite/rqlited -node-id 1 /opt/rqlite/data

# 参数说明
node-id:启动rqlite需要一个唯一的标识
/opt/rqlite/data:数据存储路径

4.1.2 客户端连接
/opt/rqlite/rqlite -H localhost -p 4001

4.1.3 增删改查操作(命令行)
  • 1 创建表

    CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)

  • 2 插入数据

    INSERT INTO foo(name) VALUES(“fiona”)

  • 3 查询数据

    SELECt * FROM foo

  • 4 修改数据

    UPDATe foo set name=‘tom’ where id=1

  • 5 删除表中数据

    delete from foo where id=1

  • 6 表删除

    drop table foo

  • 7 查看表

    .tables

4.2 集群版安装

我们准备3个节点:192.168.233.61,192.168.233.62,192.168.233.63,组成一个集群

4.2.1 主节点创建

我们将192.168.233.61作为主节点,192.168.233.62,192.168.233.63作为备节点加入

# 启动rqlite服务
/opt/rqlite/rqlited -node-id 192.168.233.61 -http-addr 192.168.233.61:4001 -raft-addr 192.168.233.61:4002 /opt/rqlite/data

# 参数说明
-node-id:唯一标识
-raft-addr:用于监听其他节点通讯和加入集群的请求
-http-addr:用于监听客户端请求地址
4.2.2 从节点加入到集群

将192.168.233.62 加入到集群

# 启动rqlite并且加入到集群中
 /opt/rqlite/rqlited -node-id 192.168.233.62 -http-addr 192.168.233.62:4001 -raft-addr 192.168.233.62:4002 -join http://192.168.233.61:4001 /opt/rqlite/data

# 参数说明
-node-id:唯一标识
-raft-addr:用于监听其他节点通讯和加入集群的请求
-http-addr:用于监听客户端请求地址
-join:加入集群

将192.168.233.63加入到集群

# 启动rqlite并且加入到集群中
 /opt/rqlite/rqlited -node-id 192.168.233.63 -http-addr 192.168.233.63:4001 -raft-addr 192.168.233.63:4002 -join http://192.168.233.61:4001 /opt/rqlite/data

# 参数说明
-node-id:唯一标识
-raft-addr:用于监听其他节点通讯和加入集群的请求
-http-addr:用于监听客户端请求地址
-join:加入集群
4.2.3 集群状态查看

.nodes
.status

4.2.4 增删改查操作(http请求)
  • 1 创建表

    curl -XPOST ‘192.168.233.61:4001/db/execute?pretty&timings’ -H “Content-Type: application/json” -d ‘[[“CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT, age INTEGER)”]]’

  • 2 插入数据

    curl -XPOST ‘192.168.233.61:4001/db/execute?pretty&timings’ -H “Content-Type: application/json” -d ‘[[“CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT, age INTEGER)”]]’

  • 3 查询数据

    curl -XPOST ‘192.168.233.61:4001/db/query?pretty&timings’ -H “Content-Type: application/json” -d ‘[[“SELECT * FROM foo”]]’

  • 4 更新数据

    curl -XPOST ‘192.168.233.61:4001/db/execute?pretty&timings’ -H “Content-Type: application/json” -d ‘[[“UPDATe foo set name=? where id=1”, “tom”]]’

  • 5 删除数据

    curl -XPOST ‘192.168.233.61:4001/db/execute?pretty&timings’ -H “Content-Type: application/json” -d ‘[[“delete from foo where id=1”]]’

5 rqlite备份和还原 5.1 备份

192.168.233.61:4001> .dump bak.sql
192.168.233.61:4001> .backup bak.sqlite3

5.2 还原

192.168.233.61:4001> .restore bak.sql
192.168.233.61:4001> .restore bak.sqlite3

6 移除节点
# 方式1:命令行
127.0.0.1:4001> .remove 

# 方式2:http请求
curl -XDELETE http://localhost:4001/remove -d '{"id": ""}'

# 注意
方式1 的ip为任意ip,方式2的ip必须是主节点
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1006074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号