MySQL Shell 8.0.32 for GreatSQL 编译安装
0.写在前面
1.准备工作
1.1 准备 Docker 环境
1.2 下载源码包
1.3 修改 MySQL Shell 源码包
1.4 编译相关软件包
2.准备编译 MySQL Shell
2.1 编译 MySQL 8.0.32
2.2 编译 MySQL Shell 8.0.32
2.3 运行测试
3.写在最后
延伸阅读
升级 MySQL Shell for GreatSQL 版本
0. 写在前面
GreatSQL 8.0.32-24 已发布,配套的 MySQL Shell 也需要跟着升级一波,MySQL Shell 版本从 8.0.25 升级到 8.0.32 后,也引入了一些不错的新特性。
下面正式开始 MySQL Shell 编译工作。
1. 准备工作
1.1 准备 Docker 环境
参考编译环境要求 greatsql_docker_build(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/greatsql_shell_docker_build/Dockerfile) ,构建好一个 Docker 镜像环境,基本上照着做就行,这里不赘述。
1.2 下载源码包
先下载准备好下列几个源码包:
antlr4-cpp-runtime-4.10-source.zip, https://github.com/antlr/website-antlr4/blob/gh-pages/download/antlr4-cpp-runtime-4.10-source.zip
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/
目录下,并解压缩。
1.3 修改 MySQL Shell 源码包
打开链接:https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/greatsql_shell_docker_build/mysqlsh-for-greatsql-8.0.32.patch,下载GreatSQL补丁包文件 mysqlsh-for-greatsql-8.0.32.patch。
为了让 MySQL Shell 支持 GreatSQL 仲裁节点(ARBITRATOR)特性,需要打上补丁包:
1.4 编译相关软件包
1.43.1 antlr4-4.10
编译 antlr4 需要依赖 uuid
库,先安装上:
接着开始编译 antlr4:
1.4.2 patchelf-0.14.5
1.4.3 protobuf-3.19.4
1.4.4 rpcsvc-proto-1.4
2. 准备编译 MySQL Shell
2.1 编译 MySQL 8.0.32
在 MySQL 8.0.32 源码目录中,编译生成 MySQL 客户端相关依赖库,这是编译 MySQL Shell 之前要先做的事:
P.S,在 cmake
后面加上 -- -j16
的作用是多线程并行编译,这样速度更快,不加的话只能单线程编译,速度比较慢。
2.2 编译 MySQL Shell 8.0.32
编译完成后,切换到 MySQL Shell 源码目录下,准备继续编译:
测试提示错误信息:
这表示需要先安装 Python 3.8 相关软件包,因为还需要 libssh,就一并安装:
再次编译,并指定 Python 3.8 的相关路径:
编译完成后,会把二进制文件安装到 /usr/local/greatsql-shell-8.0.32-24-Linux-glibc2.28-x86_64
目录下。
2.3 运行测试
运行 mysqlsh
,看是否能直接跑起来:
提示无法找到动态库文件 libprotobuf.so.30
。实际上这个动态库文件在 /usr/local/lib
目录下,只需将其拷贝一份到 MySQL Shell 的 lib 目录下即可:
这次找到依赖库文件了。
运行 mysqlsh
,看能否正常使用:
看到有 WARNING 提示,检查日志文件 /root/.mysqlsh/mysqlsh.log
,看到有了类似下面的内容:
只需用 pip 安装相应模块即可:
好了,开始感受 GreatSQL 8.0.32-24 新版本特性,以及 MGR 仲裁节点的魅力吧 O(∩_∩)O 哈哈~
3. 写在最后
折腾完这些,是不是感觉还是有点麻烦?没关系,我已经把这些工作都封装到 docker 镜像中了,包括 Dockerfile 以及自动编译脚本。下面简单介绍下怎么用。
自行下载 MySQL 和 MySQL Shell,以及 boost 源码包,上面已经给过下载地址了。
下载完后都放在 /opt/
目录下,并解压缩。
下载 MySQL Shell for GreatSQL 编译辅助包(https://product.greatdb.com/GreatSQL/greatsql-shell-requirement-pkg.tar.xz),解压缩到 /opt/
目录下。
执行下面命令构建 docker 镜像:
说明: 上述命令中,脚本后面跟着三个目录参数,分别对应 MySQL、MySQL Shell、boost 源码全路径。
之后就可以自动完成 MySQL Shell for GreatSQL 编译 docker 容器环境,启动并进入该容器:
进入容器后,编辑 /opt/greatsql-shell-automake.sh
脚本,确认其中文件目录是否都正确,确认都没问题的话,就可以执行该脚本开始编译源码了。
编译结束后,试着运行 mysqlsh
客户端,确认可用:
看起来挺顺利的哈 :)
延伸阅读
版权声明: 本文为 InfoQ 作者【GreatSQL】的原创文章。
原文链接:【http://xie.infoq.cn/article/2819ada0a2fb47f3913abbea8】。文章转载请联系作者。
评论