编译GreatSQL with RocksDB引擎

这篇具有很好参考价值的文章主要介绍了编译GreatSQL with RocksDB引擎。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GreatSQL里也能用上RocksDB引擎

1. 前言

RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点:

  1. 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现卓越。它能够处理大量的写入操作,并且在写入操作上有较低的延迟。
  2. 可压缩存储: 具有高度可压缩的特性,可以有效减小数据在磁盘上的占用空间。
  3. 事务支持: 支持 MySQL 的事务语义,这使得它适用于要求事务性支持的应用场景。
  4. 定制化存储格式: 允许用户通过定制化存储格式来满足其特定需求。
  5. 兼容性: 兼容 MySQL 的 API 和协议。用户可以将 Percona RocksDB 作为替代存储引擎,以满足特定的性能和压缩需求。

总体而言,RocksDB是为了应对大规模、写入密集型的工作负载而设计的,尤其适用于像 Facebook 这样需要高度可压缩、高性能、事务支持的应用场景。

GreatSQL是从Percona Server For MySQL fork过来的,因此也能在GreatSQL中用上RocksDB引擎。但是因为在GreatSQL中进行了MGR优化,部分代码和RocksDB引擎有冲突,因此在默认启用MGR的时候就得关闭RocksDB引擎。在需要RocksDB引擎但不需要MGR的场景下,可以采用本文的方法自行编译以支持RocksDB引擎。

2. 构建编译环境

下载GreatSQL-Docker仓库,并参考其中的GreatSQL-Build项目代码,进行本地编译工作。

$ mkdir -p /opt && cd /opt
$ git clone git@gitee.com:GreatSQL/GreatSQL-Docker.git
$ cd GreatSQL-Docker
$ ls
deppkgs  GreatSQL  GreatSQL-Build  GreatSQL-Shell  GreatSQL-Shell-Build  LICENSE  README.md

这其中的 GreatSQL-Build 是我们这次要用到的项目。

3. 编译GreatSQL with RocksDB

先修改 Dockerfile中的部分代码,部分文件改成本地COPY,不再从服务器上下载:

$ cd GreatSQL-Docker/GreatSQL-Build/
$ vim Dockerfile

# 在第19行附近,增加一行
...
 18 openssl openssl-devel pam-devel readline-devel wget zlib-devel"
 19 COPY ${ENTRYPOINT} /
20 RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
...

# 删除原来第44行
...
 43 curl -o ${OPT_DIR}/${GREATSQL_ENV} ${GREATSQL_BUILD_DOWNLOAD_URL}/${GREATSQL_ENV} > /dev/null 2>&1 && \
 44 chmod +x /*sh ${OPT_DIR}/*sh
...

修改完后,将不再从服务器上下载 docker-entrypoint.sh 脚本,改用本地文件。

再修改 docker-entrypoint.sh 中的部分代码,启用 RocksDB 编译支持:

# 在第14行后增加一行,最后变成类似下面这样
$ vim docker-entrypoint.sh +14
...
 14 wget -c -O ${GREATSQL_MAKESH} ${GREATSQL_MAKESH_DOWNLOAD_URL}/${GREATSQL_MAKESH} >> ${MAKELOG} 2>&1 && \
 15 sed -i 's/DWITH_ROCKSDB=.*/DWITH_ROCKSDB=ON \\/ig' ${GREATSQL_MAKESH} >> ${MAKELOG} 2>&1 && \
 16 wget -c -O ${RPCGEN} ${GREATSQL_BUILD_DOWNLOAD_URL}/${RPCGEN} >> ${MAKELOG} 2>&1 && \
...

这个改动是修改 greatsql-automake.sh 脚本,使其启用 RocksDB 编译支持。

然后执行下面的命令,开始构建一个GreatSQL编译环境的Docker镜像:

$ docker build -t greatsql_build .
Sending build context to Docker daemon  20.48kB
Step 1/8 : FROM centos:8
 ---> 5d0da3dc9764
Step 2/8 : ENV LANG en_US.utf8
...

构建完Docker镜像后,新建一个Docker容器,即可自动完成GreatSQL编译:

# 创建容器
$ docker run -itd --name greatsql greatsql_build bash

# 查看编译进展
$ docker logs greatsql
0. touch logfile /tmp/greatsql-automake.log

1. downloading sourcecode tarballs and extract
 1.1 downloading sourcecode tarballs ...
 1.2 extract tarballs ...

2. compile patchelf

3. compile GreatSQL
 3.1 compiling GreatSQL
 3.2 remove mysql-test from GreatSQL
 3.3 make dynamic link for GreatSQL

4. greatsql build completed!
drwxrwxr-x 13 mysql mysql       293 Feb 22 01:33 GreatSQL-8.0.32-25-centos-glibc2.28-x86_64
/opt/GreatSQL-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqld  Ver 8.0.32-25 for Linux on x86_64 (GreatSQL, Release 25, Revision 79f57097e3f)

5. remove files and clean up

如果能看到这个字样,就表示GreatSQL已经编译完成了,再执行下面命令确认是否编译产生RocksDB动态库文件:

$ docker exec -it greatsql bash -c "find /opt/GreatSQL-8.0.32-25-centos-glibc2.28-x86_64/ -name ha_rocksdb.so"
/opt/GreatSQL-8.0.32-25-centos-glibc2.28-x86_64/lib/plugin/ha_rocksdb.so

可以看到成功编译出RocksDB动态库文件,可以将编译生成的GreatSQL二进制文件拷贝到宿主机上使用。

如果还想同时用上GreatSQL Rapid引擎,可以下载GreatSQL二进制包,解压缩,提取其中的 lib/plugin/ha_rapid.solib/private/libduckdb.so 动态库文件,放置到相应目录下即可。

接下来就可以体验在GreatSQL下使用更稳定可靠的MGR,以及压缩率很高的RocksDB引擎和查询性能更高的Rapid引擎。


Enjoy GreatSQL 😃

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

编译GreatSQL with RocksDB引擎

技术交流群:

微信:扫码添加GreatSQL社区助手微信好友,发送验证信息加群

编译GreatSQL with RocksDB引擎文章来源地址https://www.toymoban.com/news/detail-839275.html

到了这里,关于编译GreatSQL with RocksDB引擎的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • percona-server-rocksdb-8.0.32 安装

    MyRocks是关系型数据库Mysql 基于RocksDB 的存储引擎,一个可嵌入的、持久的键值存储。Percona MyRocks 是集于 Percona Server for MySQL的. RocksDB存 储基于日志结构的合并树(LSM tree)。它针对快速存储进行了优化,有出色的空间和写入效率以及可接受的读取性能。因此,如果您的工作负载使

    2024年02月04日
    浏览(28)
  • 离线编译 onnxruntime-with-tensortRT

    记录为centos7的4090开发机离线编译onnxruntime的过程,因为在离线的环境,所以踩了很多坑。 https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境,所以很多都是要自己手动编译安装的 onnx 源码 1.51 cmake 3.26.6 (本地环境

    2024年01月25日
    浏览(28)
  • CocosCreator引擎源码编译准备

    修改源码后需要重新编译引擎才能生效,单独使用引擎自带的从开发者-编译引擎并不会起作用,要到引擎目录 “C:CocosCreator_2.2.2resourcesengine” 中运行命令 “npm install” ,再运行命令 “gulp”。 在命令行中进入引擎路径,例如 安装 gulp 构建工具 安装依赖的模块 编译一些数

    2024年02月08日
    浏览(28)
  • 自制游戏引擎之shader预编译

    shader预编译为二进制,在程序运行时候加载,可以提升性能,节省启动时间. third_party文件里需要放依赖的第三方 因为电脑访问google的问题,无法通过 shaderc-2023.4utilsgit-sync-deps 脚本自动下载第三方,手动下载 https://codeload.github.com/KhronosGroup/SPIRV-Tools/zip/refs/tags/v2023.3.rc1 https://codeloa

    2024年02月13日
    浏览(32)
  • Jetson Xavier NX编译OpenCV(with cuda)

    Jetson Xavier NX默认安装的OpenCV 4.5.4(不带cuda),因项目要求OpenCV使用cuda作加速,因此,须重新编译OpenCV。这里为了方便直接在目标机上面编译,避免复杂的环境及依赖。 下载地址: OpenCV · GitHub 我这里下载opencv-4.5.4,opencv_contrib-4.5.4,下载后并解压。 查看是否卸载: libs: versi

    2024年02月11日
    浏览(29)
  • 【ARM 嵌入式 编译系列 2.2 -- GCC 编译参数学习 assembler-with-cpp 使用介绍】

    请阅读 【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 在 rt-thread 的编译脚本中经常会看到下面编译参数: arm-none-eabi-gcc 是针对 ARM 架构的交叉编译器,用于编译嵌入式 ARM 应用程序。在 GCC 中, -x 选项用于指定要编译的输入文件的语言。当与 assembler-with-cpp 一起使用时,

    2024年01月23日
    浏览(37)
  • Android13 编译ninja failed with: exit status 137

    现象很奇怪,主机是ubuntu 18.04, 内存有32G,并且系统中有两份Android13代码, 有一份编译正常,另外一份编译不正常,一度以为是因为下载源码不齐全导致,后面仔细看日志,原来是内存不够,导致OOM-killer杀死了。 分析: 当前界面没有太多可以参考的出错信息,看日志: 

    2024年02月22日
    浏览(35)
  • 编译3D渲染引擎Horde3D

    Horde3D是Github上一款开源的轻量级3D渲染引擎,同时它还支持多个平台。今天我们准备在Mac平台上交叉编译至Android平台。如果需要同时能编译Sample,那么还需要SDL2库。默认情况下,编译 Horde3D 时不强制下载 SDL2 ,你可以选择强制下载,版本默认下载的是 2.0.9 ,不过我们打算替

    2024年02月10日
    浏览(33)
  • Windows系统编译libhv带SSL,开启WITH_OPENSSL

    需要开发一个https的服务,使用libhv来做,需要重新编译libhv,需要开启 WITH_OPENSSL,前面编译一直很顺利,但是打开VS生成动态库的时候,报错,找不到ssl相关的文件,看了官方的文档,说需要自己配置ssl。然后研究怎么编译OPENSSL,和编译支持HTTPS的libhv花了一点时间,所以想

    2024年04月10日
    浏览(28)
  • windows11编译OpenCV4.5.0 with CUDA(附注意事项)

    从OpenCV4.2.0 版本开始允许使用 Nvidia GPU 来加速推理。本文介绍最近使用windows11系统编译带CUDA的OpenCV4.5.0的过程。 文中使用【 特别注意 :…】为大家标识出容易出错的地方。 安装成功后,使用CPU与GPU调用yolov4模型进行推理的耗时测试结果: GPU CPU 4ms 311ms 从差距上看,还是值

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包