编译GreatSQL with RocksDB引擎
|
GreatSQL里也能用上RocksDB引擎
1. 前言
RocksDB 是基于Facebook 开源的一种支持事务的、高度可压缩、高性能的MyRocks存储引擎,特别适用于高度压缩和大容量的数据。以下是一些关键特点:
- 高性能: LSM 树结构使得RocksDB在写入密集型负载下表现卓越。它能够处理大量的写入操作,并且在写入操作上有较低的延迟。
- 可压缩存储: 具有高度可压缩的特性,可以有效减小数据在磁盘上的占用空间。
- 事务支持: 支持 MySQL 的事务语义,这使得它适用于要求事务性支持的应用场景。
- 定制化存储格式: 允许用户通过定制化存储格式来满足其特定需求。
- 兼容性: 兼容 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.so 和 lib/private/libduckdb.so 动态库文件,放置到相应目录下即可。
接下来就可以体验在GreatSQL下使用更稳定可靠的MGR,以及压缩率很高的RocksDB引擎和查询性能更高的Rapid引擎。
Enjoy GreatSQL
来源:https://www.cnblogs.com/greatsql/p/18070174
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2024-3-13 16:41:19
举报
回复
分享
|
|
|
|