Apache Kvrocks 是一个分布式键值 NoSQL 数据库,使用 RocksDB 作为存储引擎,兼容 Redis 协议。与 Redis 相比,Kvrocks 旨在降低内存成本并增加容量。
特性
-
Redis 兼容:用户可以通过任何 Redis 客户端访问 Apache Kvrocks。 -
命名空间:与 Redis SELECT 类似,但每个命名空间配备有令牌。 -
复制:像 MySQL 一样使用 binlog 进行异步复制。 -
高可用:支持 Redis 哨兵在 master 或 slave 故障时进行故障转移。 -
集群:集中管理,但可通过任何 Redis 集群客户端访问。
维护与监控
完整备份
您可以使用「bgsave」命令触发「Kvrocks」生成备份,并使用「rsync」工具将备份的所有文件复制到远程服务器。
增量备份
如果 Kvrocks 数据库变化不大,可以尝试增量备份,这种方式可以使用更少的网络带宽。此解决方案类似于 Kvrocks 在完全同步时恢复基于损坏的传输的文件。
-
获取旧的远程备份文件列表,以及当前新的备份文件列表(通过 bgsave 命令和读取 backup 目录)。 -
通过比较,找出旧远程备份的无效文件,并将其删除。 -
仅复制旧远程备份没有但新备份有的文件,并存储到远程服务器中。
Grafana 监控
与 Redis 指标监视器一样,Kvrocks 也将内部指标导出到 INFO 命令。Kvrocks Grafana 仪表板模板可在 Grafana.com 上获取。
「下载 JSON 文件」
wget https://grafana.com/api/dashboards/15286 -O kvrocks-dashboard.json
「Grafana 屏幕截图示例」
命名空间
与 Redis 数据库一样,Kvrocks 使用命名空间来隔离用户之间的数据。但与 Redis 不同的是,每个命名空间都有自己的密码。使用时数据将存储在默认命名空间中 requirepass。当启用集群模式(如 Redis DB)时,命名空间将不起作用。
管理命名空间
添加命名空间,必须设置 requirepass,因为 requirepass 用户视为管理员。
# Auth with the requirepass
redis-cli -p 6666 -a ${REQUIREPASS}
# Add a new namespace with the token, the namespace name must be unique.
127.0.0.1:6666> namespace add ${NEW NAMESPACE} ${NEW TOKEN}
# Update the namespace's token
127.0.0.1:6666> namespace set ${NAMESPACE} ${NEW TOKEN}
# Delete the namespace, the namespace's data WOULD NOT be deleted,
# unless you use the `flushdb` command to flush the DB data.
127.0.0.1:6666> namespace del ${NAMESPACE}
# Get the namespace's token
127.0.0.1:6666> namespace get ${NAMESPACE}
# List namespaces
127.0.0.1:6666> namespace get *
请注意,必须使用该 config rewrite 命令将新命名空间保留到配置文件中。
切换命名空间
首先使用 namespace add 命令创建命名空间 ns1 和 ns2 并使用相应的标记 token1 和 token2。
127.0.0.1:6666> namespace add ns1 token1
127.0.0.1:6666> namespace add ns2 token2
然后可以使用 token1 和 token2,在命名空间之间操作数据不会互相影响,如下所示:
# Use token1 to switch to ns1
127.0.0.1:6666> auth token1
OK
127.0.0.1:6666> set key 100
OK
127.0.0.1:6666> get key
"100"
# Use token2 to switch to ns2
127.0.0.1:6666> auth token2
OK
127.0.0.1:6666> set key 200
OK
127.0.0.1:6666> get key
"200"
# Use token1 to switch to ns1 again, the value is still 100
127.0.0.1:6666> auth token1
OK
127.0.0.1:6666> get key
"100"
使用入门
使用 Docker
拉取最新镜像并启动容器:
docker run -it -p 6666:6666 apache/kvrocks
现在可以使用 redis-cli 在端口上将 kvrocks 服务器作为 Redis 运行 6666:
redis-cli -p 6666
使用 git
git clone https://github.com/apache/kvrocks.git
cd kvrocks
./x.py build
# `./x.py build -h` to check more options;
# especially, `./x.py build --ghproxy` will fetch dependencies via ghproxy.com.
通过以下方式运行 Kvrocks 服务器:
./build/kvrocks
使用 redis-cli 在端口上将 kvrocks 服务器作为 Redis 运行 6666:
redis-cli -p 6666
传送门
开源协议:Apache2.0
开源地址:https://github.com/apache/kvrocks
项目合集:https://github.com/OpenTechCol/OpenTechCol
-END-
原文始发于微信公众号(开源技术专栏):Apache Kvrocks一个分布式NoSQL数据库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155278.html