rqlite是一个易于使用的轻量级分布式关系数据库,它使用SQLite作为其存储引擎。rqlite 部署简单,操作非常简单,其集群能力为您提供容错和高可用性。
2 特性github地址:
https://github.com/rqlite/rqlite
下载地址
https://github.com/rqlite/rqlite/releases
- 非常容易部署,无需单独安装 SQLite。
- 完全复制的生产级 SQL 数据库,具有对 SQLite全文搜索和JSON 文档支持的完全访问权限。
- 生产级分布式共识系统。
- 一个易于使用的HTTP(S) API。还可以使用命令行界面,以及各种客户端库。
- 节点发现和自动集群的多种选项,包括与 Kubernetes、Consul、etcd 和 DNS 的集成,允许动态创建集群。
- 广泛的安全和加密支持,包括节点到节点的加密。
- 读取一致性级别的选择,并支持选择写入性能而不是持久性。
- 可选的只读(非投票)节点,可以为系统增加读取可扩展性。
- 支持事务
- 热备份,以及直接从 SQLite 加载。
# 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/profile3.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 rqbench4 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 40014.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.1 主节点创建我们准备3个节点:192.168.233.61,192.168.233.62,192.168.233.63,组成一个集群
我们将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 集群状态查看
4.2.4 增删改查操作(http请求).nodes
.status
-
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.2 还原192.168.233.61:4001> .dump bak.sql
192.168.233.61:4001> .backup bak.sqlite3
6 移除节点192.168.233.61:4001> .restore bak.sql
192.168.233.61:4001> .restore bak.sqlite3
# 方式1:命令行 127.0.0.1:4001> .remove# 方式2:http请求 curl -XDELETE http://localhost:4001/remove -d '{"id": " "}' # 注意 方式1 的ip为任意ip,方式2的ip必须是主节点



