注册
|
登录
发帖
热搜
活动
交友
discuz
论坛
BBS
翼度工具
翼度网址导航
开发工具
Linux命令速查
网页设计配色表
在线制作icon
颜色代码选取器
翼度科技
»
论坛
›
编程开发
›
mysql
›
查看内容
返回列表
发新帖
MySQL Shell 8.0.32 for GreatSQL编译安装
遗忘的温柔
遗忘的温柔
当前离线
积分
30
10
主题
10
帖子
30
积分
新手上路
新手上路, 积分 30, 距离下一级还需 20 积分
新手上路, 积分 30, 距离下一级还需 20 积分
积分
30
发消息
显示全部楼层
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
)特性,需要打上补丁包:
$ 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
复制代码
1.4 编译相关软件包
1.43.1 antlr4-4.10
编译antlr4需要依赖 uuid 库,先安装上:
$ yum install -y libuuid libuuid-devel uuid
复制代码
接着开始编译antlr4:
$ cd /opt/antlr4-4.10/runtime/Cpp/
$ mkdir bld && cd bld
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/antlr4 && make -j16 && make -j16 install
复制代码
1.4.2 patchelf-0.14.5
$ cd /opt/patchelf-0.14.5
$ ./bootstrap.sh && ./configure && make -j16 && make -j16 install
复制代码
1.4.3 protobuf-3.19.4
$ cd /opt/protobuf-3.19.4
$ ./configure && make -j16 && make -j16 install
复制代码
1.4.4 rpcsvc-proto-1.4
$ cd /opt/rpcsvc-proto-1.4
$ ./configure && make -j16 && make -j16 install
复制代码
2. 准备编译MySQL Shell
2.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
复制代码
P.S,在 cmake 后面加上 -- -j16 的作用是多线程并行编译,这样速度更快,不加的话只能单线程编译,速度比较慢。
2.2 编译MySQL Shell 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-24-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/ \
&& make && make install
复制代码
测试提示错误信息:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
(Required is at least version "3.8")
复制代码
这表示需要先安装Python 3.8相关软件包,因为还需要libssh,就一并安装:
$ yum install -y python38 python38-devel python38-libs python38-pyyaml libssh libssh-config libssh-devel
复制代码
再次编译,并指定Python 3.8的相关路径:
$ cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/greatsql-shell-8.0.32-24-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 -j16 && make -j16 install
复制代码
编译完成后,会把二进制文件安装到 /usr/local/greatsql-shell-8.0.32-24-Linux-glibc2.28-x86_64 目录下。
2.3 运行测试
运行 mysqlsh,看是否能直接跑起来:
$ cd /usr/local/greatsql-shell-8.0.32-24-Linux-glibc2.28-x86_64
$ ./bin/mysqlsh
./bin/mysqlsh: error while loading shared libraries: libprotobuf.so.30: cannot open shared object file: No such file or directory
复制代码
提示无法找到动态库文件 libprotobuf.so.30。实际上这个动态库文件在 /usr/local/lib 目录下,只需将其拷贝一份到MySQL Shell的lib目录下即可:
$ cp /usr/local/lib/libprotobuf.so.30 lib/mysqlsh/
$ ldd bin/mysqlsh | grep libprotobuf.so
libprotobuf.so.30 => /usr/local/greatsql-shell-8.0.32-24-Linux-glibc2.28-x86_64/bin/../lib/mysqlsh/libprotobuf.so.30 (0x00007f60660a2000)
复制代码
这次找到依赖库文件了。
运行 mysqlsh,看能否正常使用:
$ ./bin/mysqlsh
MySQL Shell 8.0.32
...
Type '\help' or '\?' for help; '\quit' to exit.
WARNING: Found errors loading plugins, for more details look at the log at: /root/.mysqlsh/mysqlsh.log
MySQL Py > \q
Bye!
复制代码
看到有
WARNING
提示,检查日志文件 /root/.mysqlsh/mysqlsh.log,看到有了类似下面的内容:
ModuleNotFoundError: No module named 'certifi'
复制代码
只需用pip安装相应模块即可:
$ pip3.8 install --user certifi
复制代码
好了,开始感受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镜像:
$ cd /opt/greatsql_shell_docker_build
$ sh ./greatsql-shell-docker-build.sh /opt/mysql-8.0.32/ /opt/mysql-shell-8.0.32-src/ /opt/boost_1_77_0
复制代码
说明:
上述命令中,脚本后面跟着三个目录参数,分别对应MySQL、MySQL Shell、boost源码全路径。
之后就可以自动完成MySQL Shell for GreatSQL编译docker容器环境,启动并进入该容器:
$ docker images | grep -i greatsql_shell
greatsql_shell_build_env latest 4db9dcd3c563 About an hour ago 4.1GB
$ docker run -d \
-v /opt/mysql-8.0.32:/opt/mysql-8.0.32 \
-v /opt/mysql-shell-8.0.32-src:/opt/mysql-shell-8.0.32-src \
-v /opt/boost_1_77_0:/opt/boost_1_77_0 \
--name greatsql_shell_build_env greatsql_shell_build_env
$ docker exec -it greatsql_shell_build_env bash
复制代码
进入容器后,编辑 /opt/greatsql-shell-automake.sh 脚本,确认其中文件目录是否都正确,确认都没问题的话,就可以执行该脚本开始编译源码了。
# 加载环境变量,并切换到高版本gcc编译环境
[root@a5cebc4c0276 opt]# cd /opt
[root@a5cebc4c0276 opt]# source ~/.bash_profile
[root@a5cebc4c0276 opt]# ls -la
total 136
drwxr-xr-x 1 root root 110 Jul 11 08:56 .
drwxr-xr-x 1 root root 62 Jul 11 08:08 ..
drwxr-xr-x 8 root root 4096 Aug 5 2021 boost_1_77_0
-rwxr-xr-x 1 root root 910 Jul 11 08:15 greatsql-shell-automake.sh
drwxr-xr-x 32 7161 31415 65536 Jul 11 08:12 mysql-8.0.32
drwxr-xr-x 18 root root 65536 Jul 11 08:15 mysql-shell-8.0.32-src
drwxr-xr-x 3 root root 28 Jul 11 07:27 rh
# 开始自动编译
[root@a5cebc4c0276 opt]# sh ./greatsql-shell-automake.sh
复制代码
编译结束后,试着运行 mysqlsh 客户端,确认可用:
/usr/local/greatsql-mysql-shell-8.0.32-centos-glibc2.28-x86_64/bin/mysqlsh
MySQL Shell 8.0.32
Copyright (c) 2016, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type '\help' or '\?' for help; '\quit' to exit.
MySQL Py >
复制代码
看起来挺顺利的哈 :)
延伸阅读
利用MySQL Shell安装部署MGR集群
mysql-shell for GreatSQL 8.0.27编译安装及使用
MySQL Shell Release Notes
,
https://dev.mysql.com/doc/relnotes/mysql-shell/8.0/en/
GreatSQL 8.0.32-24 今日发布
Enjoy GreatSQL
来源:
https://www.cnblogs.com/greatsql/p/17666663.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
上一篇:
mysql~date_format性能问题
下一篇:
谈了千百遍的数据一致性
发表于 2023-8-30 11:26:54
举报
回复
使用道具
分享
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
快速回复
快速回复
返回顶部
返回顶部
返回列表
返回列表