编译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.log1. downloading sourcecode tarballs and extract1.1 downloading sourcecode tarballs ...1.2 extract tarballs ...2. compile patchelf3. compile GreatSQL3.1 compiling GreatSQL3.2 remove mysql-test from GreatSQL3.3 make dynamic link for GreatSQL4. 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 :)

全文完。


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0


文章推荐:

    • MySQL Shell 8.0.32 for GreatSQL编译二进制包

    • 在CentOS环境下编译GreatSQL src.rpm包,并再编译RPM包

    • 在openEuler环境下快速编译GreatSQL RPM包

    • 在CentOS环境下编译GreatSQL RPM包

    • GreatSQL 8.0.32-25来了

    • GreatSQL一个关于主从复制的限制描述与规避

    • MTS性能监控你知道多少

    • MySQL对derived table的优化处理与使用限制

    • MySQL一次大量内存消耗的跟踪

    • Myloader导入更快吗?并没有。。。

    • 重现一条简单SQL的优化过程


779c55f3e5c4d632ff7645388c926a32.png题图由阿里通义万相生成

想看更多技术好文,点个“在看”吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/699087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

看了很多调色教程,背了一堆调色参数,可最终还是调不出理想的效果。别再怀疑自己了,不是你的剪辑技术不行,而是剪辑软件没选对。只要掌握了最基本的调色原理,一款适合自己的视频剪辑软件是很容易出片的。 有关剪辑视频…

python实现维特比算法

对于维特比算法,首先想到的就是高通公司,对于现在的通信行业的两大巨头公司之一,高通公司的发家是由器创始人维特比发明了一种高效的通信解码技术,维特比算法。 对于维特比算法是什么,以一个例子来讲述什么是维特比算…

如何查看Linux中运行了哪些应用

在Linux中,有多种方法可以查看正在运行的应用程序。以下是一些常用的命令: ps 命令:ps 命令用于显示当前终端会话中运行的进程。要查看系统上运行的所有进程,可以使用 -e 或 -A 选项。例如: ps -e或 ps -A这将列出所有…

TiDB离线部署、Tiup部署TiDB

先做tidb准备工作: 部署 TiDB 前的环境检查操作:TiDB 环境与系统配置检查 | PingCAP 文档中心 1.查看数据盘 fdisk -l (2,3)本人的分区已经是 ext4 文件系统不用分区,具体官方文档的分区: 4.查看数据盘…

Python reversed函数

在Python编程中,reversed()函数是一个内置函数,用于反转序列对象的元素顺序。这个函数可以应用于列表、元组、字符串等可迭代对象,并返回一个反向迭代器,可以按照相反的顺序遍历序列中的元素。本文将深入探讨Python中的reversed()…

Vue学习之计算属性

模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: const author reactive({name: John Doe,books: [Vue 2 - Advan…

【算法与数据结构】1971、LeetCode寻找图中是否存在路径

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题应用并查集的理论直接就可以解决:【算法与数据结构】回溯算法、贪心算法、动态规划、图…

时域系统到频域响应的直观解析及数学推导

课本里经常有已知系统时域的差分方程,求系统的频率响应这样的题,老师会讲怎么带公式进去解决,怎么查表解决,但我们总时无法直观地理解这两种转换的特殊关联在哪里,这篇文章以FIR滤波器为例,不仅列出了课本里…

【Docker】免费使用的腾讯云容器镜像服务

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 1、设置密码 2、登录实例&#xff08;sudo docker login xxxxxx&#xff09; 3、新建命名空间&#xff08;每个命名空…

高刷电竞显示器 - HKC VG253KM

今天给大家分享一款高刷电竞显示器 - HKC VG253KM。 高刷电竞显示器 - HKC VG253KM源于雄鹰展翅翱翔的设计灵感&#xff0c;严格遵循黄金分割比例的蓝色点晴线条&#xff0c;加上雾面工艺及高低起伏错落有致的线条处理&#xff0c;在VG253KM的背部勾勒出宛若大鹏展翅的鹰翼图腾…

Python实战:统计字符串中的英文字母、空格、数字及其他字符出现的个数

Python实战&#xff1a;统计字符串中的英文字母、空格、数字及其他字符出现的个数 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &…

个人博客系统测试

文章目录 一、项目介绍二、测试1. 功能测试2. 自动化测试&#xff08;1&#xff09;添加相关依赖&#xff08;2&#xff09;新建包并在报下创建测试类&#xff08;3&#xff09;亮点及难点 一、项目介绍 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来…

windows11本地深度学习环境搭建Anacond,keras,tensorflow,pytorch, jupyter notebook

前言 工欲善其事&#xff0c;必先利其器。 第一步 安装Anaconda 下载地址&#xff1a; https://www.anaconda.com/download 路径默认 这里都勾选上 然后会卡在这里&#xff0c;卡很久&#xff0c;不用管&#xff0c;等着就行 第二步 配置环境 conda env list 列出所有…

Redis可视化工具——RedisInsight

文章目录 1. 下载2. 安装3. RedisInsight 添加 Redis 数据库4. RedisInsight 使用 RedisInsight 是 Redis 官方出品的可视化管理工具&#xff0c;支持 String、Hash、Set、List、JSON 等多种数据类型的管理&#xff0c;同时集成了 RedisCli&#xff0c;可进行终端交互。 1. 下载…

电子器件系列63:焊带(光伏焊带)

光伏焊带&#xff0c;又称涂锡焊带。光伏焊带是光伏组件的重要组成部分&#xff0c;属于电气连接部件&#xff0c;应用于光伏电池片的串联或并联&#xff0c;发挥导电聚电的重要作用&#xff0c;以提升光伏组件的输出电压和功率。光伏焊带是光伏组件焊接过程中的重要材料&#…

ShardingSphere 5.x 系列【15】分布式主键生成器

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 配置3. 内置算法3.1 UUID3.2 Snowflake3.3 NanoId3.4 CosId3.5 Co…

美客多如何批量注册买家账号?

美客多在南美电商领域可是个大佬。它的实力强大&#xff0c;影响力广泛&#xff0c;被大家尊称为南美电商巨头。它的业务范围覆盖了整个拉丁美洲&#xff0c;特别是一些重要的国家&#xff0c;比如墨西哥、阿根廷、玻利维亚、巴西、智利和哥伦比亚&#xff0c;这些地方都有它的…

【开源】SpringBoot框架开发婚恋交友网站

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新闻管理模块2.4 相亲大会管理模块2.5 留言管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 会员信息表3.2.2 新闻表3.2.3 相亲大会表3.2.4 留言表 四、系统展示五、核心代码5.…

cookie伪造 [BSidesCF 2019]Kookie1

打开题目 提示用admin用户登录 尝试弱口令发现&#xff0c;登录失败 显示用admin&passwordadmin!进行登录 有发现说cookie&#xff0c;就尝试用cookie登录&#xff1a; f12编辑添加cookie重发包: 或者bp抓包 Cookie:usernameadmin 用admin登录成功 得到flag: 参考文章&…

Nmap详解

Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安 全审核工具。它被设计用来快速扫描大型网络&#xff0c;包括主机探测与发现、开放的端口情 况、操作系统与应用服务指纹识别、WAF 识别及常见安全漏洞。它的图形化界面是 Zenmap, 分布式框架为DNmap。 Nm…