MySQL Shell 8.0.32 for GreatSQL编译二进制包

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

MySQL Shell 8.0.32 for GreatSQL编译二进制包

构建MySQL Shell 8.0.32 for GreatSQL

0. 写在前面

之前已经写过一篇前传 MySQL Shell 8.0.32 for GreatSQL编译安装,最近再次编译MySQL Shell二进制包时,发现了一些新问题,因此重新整理更新本文档。

1. 几处新问题

这次编译MySQL Shell发现几个新问题,下面一一列举。

  1. MySQL Shell要求配套的antlr4版本必须是4.10.0,配套的protobuf必须是3.19.4,其他版本都不行。

  2. 部分包需要科技才能下载,有些环境下就没那么方便了,因此我都下载到本地并打包好了。

  3. 在编译antlr4时还要再下载googletest依赖包,这个下载地址也是要科技的,在内网环境中会失败,因此我antlr4源码包微调了下,把googletest依赖包也打进去了,也可以通过微调代码略过该步骤,这样就可以避免编译问题。

针对这些情况,为了方便社区用户,我直接将整个二进制包编译工作打包成Docker镜像,有需要的直接拉取镜像创建容器,只需耐心等上几分钟即可得到MySQL Shell for GreatSQL二进制包了。

使用方法很简单,类似下面这样即可:

# 前面略过Docker的安装过程
# 直接拉取镜像并创建新容器
$ docker run -itd --hostname greatsqlsh --name greatsqlsh greatsql/greatsql_shell_build bash

# 查看容器日志,大概要等几分钟才能编译完成,取决于服务器性能
# 如果看到类似下面的结果,就表明二进制包已编译完成
$ docker logs greatsqlsh | tail
1. extracting tarballs
2. compiling antlr4
3. compiling antlr4
4. compiling rpcsvc-proto
5. compiling protobuf
6. compiling greatsql shell
/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqlsh   Ver 8.0.32 for Linux on x86_64 - for MySQL 8.0.32 (Source distribution)
7. MySQL Shell 8.0.32-25 for GreatSQL build completed! TARBALL is:
-rw-r--r-- 1 root root 20343832 Jan 20 21:41 greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz

接下来回退到宿主机,将容器中的二进制包拷贝出来

$ docker cp greatsqlsh:/opt/greatsql-shell-8.0.32-25-centos-glibc2.28-x86_64.tar.xz /usr/local/

然后解压缩,就可以在宿主机环境下使用了。

说完用Docker容器构建二进制包的方法,再说下手动编译全过程,有兴趣的同学也可以跟着自己动手做一遍,增加体感。

2. 手动编译过程

2.1 准备Docker环境

参考编译环境要求参考 GreatSQL-Shell Dockerfile ,构建好一个Docker镜像环境,基本上照着做就行,这里不赘述。

2.2 下载源码包

先下载准备好下列几个源码包:

  • antlr4-4.10.0.tar.gz, https://github.com/antlr/antlr4/archive/refs/tags/4.10.tar.gz
  • boost_1_77_0.tar.gz, https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.gz
  • mysql-8.0.32.tar.gz, https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32.tar.gz
  • mysql-shell-8.0.32-src.tar.gz, https://downloads.mysql.com/archives/get/p/43/file/mysql-shell-8.0.32-src.tar.gz
  • patchelf-0.14.5.tar.gz, https://github.com/NixOS/patchelf/releases/download/0.14.5/patchelf-0.14.5.tar.gz
  • protobuf-all-3.19.4.tar.gz, https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protobuf-all-3.19.4.tar.gz
  • rpcsvc-proto-1.4.tar.gz, https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz

下载完后都放在 /opt/ 目录下,并解压缩。

2.3 修改MySQL Shell源码包

打开链接:https://gitee.com/GreatSQL/GreatSQL-Shell-Docker/blob/master/mysqlsh-for-greatsql-8.0.32.patch,下载GreatSQL补丁包文件 mysqlsh-for-greatsql-8.0.32.patch

为了让MySQL Shell支持GreatSQL仲裁节点(ARBITRATOR)特性,需要打上补丁包:

$ cd /opt/mysql-shell-8.0.32-src
$ patch -p1 -f < /opt/mysqlsh-for-greatsql-8.0.32.patch

patching file mysqlshdk/libs/mysql/group_replication.cc
patching file mysqlshdk/libs/mysql/group_replication.h

2.4 编译相关软件包

1.43.1 antlr4-4.10

编译antlr4:

$ cd /opt/antlr4-4.10/runtime/Cpp/
$ mkdir bld && cd bld
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/antlr4 && make -j16 && make -j16 install

如果你的网络环境无法直接从github上下载二进制包,则先自行下载二进制包 https://github.com/google/googletest/archive/e2239ee6043f73722e7aa812a459f54a28552929.zip,并放到antlr4代码包中相应位置,再修改antlr4代码,略过下载步骤,详见下面的做法:

$ cd /opt/antlr4-4.10/runtime/Cpp/
# 新建目录,并将下载的googletest压缩包放在该目录下
$ mkdir -p bld/_deps/googletest-subbuild/googletest-populate-prefix/src/
$ mv PATH/e2239ee6043f73722e7aa812a459f54a28552929.zip bld/_deps/googletest-subbuild/googletest-populate-prefix/src/

# 修改下面文件,注释掉第一行
$ vim runtime/CMakeLists.txt
#option(ANTLR_BUILD_CPP_TESTS "Build C++ tests." ON)

之后就可以用上面的方法进行编译,而不会在下载二进制包环节卡住不动。

2.4.2 patchelf-0.14.5

$ cd /opt/patchelf-0.14.5
$ ./bootstrap.sh && ./configure && make -j16 && make -j16 install

2.4.3 protobuf-3.19.4

$ cd /opt/protobuf-3.19.4
$ ./configure && make -j16 && make -j16 install

2.4.4 rpcsvc-proto-1.4

$ cd /opt/rpcsvc-proto-1.4
$ ./configure && make -j16 && make -j16 install

3. 编译MySQL Shell

3.1 编译MySQL 8.0.32

在MySQL 8.0.32源码目录中,编译生成MySQL客户端相关依赖库,这是编译MySQL Shell之前要先做的事:

$ cd /opt/mysql-8.0.32
$ mkdir bld && cd bld
$ cmake .. -DBOOST_INCLUDE_DIR=/opt/boost_1_77_0 \
-DLOCAL_BOOST_DIR=/opt/boost_1_77_0 \
-DWITH_SSL=system && \
cmake --build . --target mysqlclient -- -j16; \
cmake --build . --target mysqlxclient -- -j16

3.2 编译MySQL Shell 8.0.32 for GreatSQL

编译完MySQL 8.0.32后,切换到MySQL Shell源码目录下,准备继续编译:

$ cd /opt/mysql-shell-8.0.32-src/
$ mkdir bld && cd bld
$ cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/greatsql-shell-8.0.32-25-Linux-glibc2.28-x86_64 \
-DMYSQL_SOURCE_DIR=/opt/mysql-8.0.32 \
-DMYSQL_BUILD_DIR=/opt/mysql-8.0.32/bld/ \
-DHAVE_PYTHON=1 \
-DWITH_PROTOBUF=bundled \
-DBUILD_SOURCE_PACKAGE=0 \
-DBUNDLED_ANTLR_DIR=/usr/local/antlr4/ \
-DPYTHON_LIBRARIES=/usr/lib64/python3.8 -DPYTHON_INCLUDE_DIRS=/usr/include/python3.8/ \
&& make && make install

编译完成后,会把二进制文件安装到 /usr/local/greatsql-shell-8.0.32-25-Linux-glibc2.28-x86_64 目录下。

3.3 运行测试

运行 mysqlsh测试前,还要先将libprotobuf.so动态库文件拷贝放到MySQL Shell目录下,再运行测试:

$ cp /usr/local/lib/libprotobuf.so.30 /usr/local/greatsql-shell-8.0.32-25-Linux-glibc2.28-x86_64/lib/mysqlsh/
$ /usr/local/greatsql-shell-8.0.32-25-Linux-glibc2.28-x86_64/bin/mysqlsh
MySQL Shell 8.0.32
...
Type '\help' or '\?' for help; '\quit' to exit.
 MySQL  Py > \q
Bye!

好了,开始感受GreatSQL 8.0.32-25新版本特性,以及MGR仲裁节点的魅力吧 O(∩_∩)O哈哈~

延伸阅读

  • MySQL Shell 8.0.32 for GreatSQL编译安装
  • GreatSQL 8.0.32-25来了
  • 图文结合丨玩转MySQL Shell for GreatSQL
  • 利用MySQL Shell安装部署MGR集群
  • 在CentOS环境下编译GreatSQL RPM包

本文完。

Enjoy GreatSQL 😃


关于GreatSQL

GreatSQL数据库是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用高性能高兼容高安全等特性,可作为MySQL或Percona Server for MySQL的理想可选替换。

相关链接

GreatSQL社区

Gitee

Github

Bilibili

技术交流群

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

QQ群:533341697


Enjoy GreatSQL 😃

关于 GreatSQL

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

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

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

MySQL Shell 8.0.32 for GreatSQL编译二进制包

技术交流群:

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

MySQL Shell 8.0.32 for GreatSQL编译二进制包文章来源地址https://www.toymoban.com/news/detail-825186.html

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

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

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

相关文章

  • 【ARM 嵌入式 编译系列 10.4 -- 生成二进制文件】

    在嵌入的工作中,经常会使用到二进制文件,那么我们如何自己生成一个二进制文件呢?接下来介绍如何将一个只包含将32位数据的文件转化为二进制文件,原文件如下(数据一共 64bytes): 我们使用 gcc 对齐先进行编译然后再进行反汇编: 具体命令如下: 通过上面命令会生成

    2024年02月02日
    浏览(35)
  • 大幅提升iOS编译速度的cocoapods二进制化插件介绍

    驾校一点通iOS项目是采用是cocoapods来管理组件的,又经过多年的组件化发展,目前组件已经达到了120+的数量。在这种组件规模下,主工程的打包时间也从最开始的几分钟增加到十几分钟(M1)、二十几分钟(Intel)。而且在频繁切换分支开发的场景下,每次编译的耗时成了制

    2024年02月08日
    浏览(44)
  • golang 中使用 statik 将静态资源编译进二进制文件中

    现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发布的二进制文件中,用户下载以后可以直接

    2024年01月19日
    浏览(33)
  • 二进制包安装mysql

    1.先查看系统中是否已存在mysql,存在将其卸载 2.环境清理 清空PATH有关的mysql 注释掉之前的$PATH 没有就跳过这步 3.安装所需的基础依赖 4.创建用户 mysql官网下载 1.下载二进制安装包 自行选择一个下载目录 这里我下载到/opt下 4.解压到/usr/local/ 5.mysql下面没有data目录则创建 6.修

    2024年02月12日
    浏览(34)
  • MySQL运维15-二进制日志

    二进制日志包含了所有更新了数据或已经潜在更新了数据的语句及执行时间。语句以“事件”(event)的形式保存,它描述了数据的更改信息。 二进制日志不包含没有修改任何数据的语句。如果想要记录所有的语句(例如,为了识别有问题的查询),应该使用通用日志。 用于

    2023年04月18日
    浏览(37)
  • 开启MySQL二进制日志(binlog)

    前言 binlog即二进制日志 Binary Log,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有一定的性能损耗。 二进制日志有两个最重要的使用场景: Mysql主从复制

    2023年04月09日
    浏览(38)
  • MySQL 日志之二进制日志-binlog

    1、简介         MySQL 的二进制日志记录了对 MySQL 所有的更改操作,不包括 select 和 show 等操作。二进制日志文件主要有:数据恢复、主从复制、审计(判断是否有注入攻击)等作用。 2、二进制日志参数配置 2.1、文件参数配置         linux 中 MySQL的配置文件在 /etc/my.cnf,通

    2024年01月21日
    浏览(44)
  • mysql二进制方式升级8.0.34

    mysql8.0.33 存在如下高危漏洞,需要通过升级版本修复漏洞 Oracle MySQL Cluster 安全漏洞(CVE-2023-0361) mysql/8.0.33  Apache Skywalking =8.3 SQL注入漏洞   复制如下浏览器 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz 下载这个安装包 mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz

    2024年02月13日
    浏览(32)
  • mysql三大日志—— 二进制日志binlog

    binlog用于记录数据库执行的写入性操作,是一种 逻辑日志 ,binlog 处于服务层 ,通过 追加写入 的方式以二进制的形式保存在磁盘中。 binlog主要用于 主从复制 和数据恢复。 主从复制:在主机端开启binlog日志管理,主机将binlog日志发送到各个从机,从机来读取binlog文件来做到

    2024年02月13日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包