成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL Shell 8.0.32 for GreatSQL編譯二進制包

數據庫 其他數據庫
在編譯antlr4時還要再下載googletest依賴包,這個下載地址也是要科學上網的,在內網環境中會失敗,因此我antlr4源碼包微調了下,把googletest依賴包也打進去了,也可以通過微調代碼略過該步驟,這樣就可以避免編譯問題。

構建MySQL Shell 8.0.32 for GreatSQL

0. 寫在前面

最近再次編譯MySQL Shell二進制包時,發現了一些新問題,因此重新整理更新本文檔。

1. 幾處新問題

這次編譯MySQL Shell發現幾個新問題,下面一一列舉。

  • MySQL Shell要求配套的antlr4版本必須是4.10.0,配套的protobuf必須是3.19.4,其他版本都不行。
  • 部分包需要科學上網才能下載,有些環境下就沒那么方便了,因此我都下載到本地并打包好了。
  • 在編譯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 patchelf
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哈哈~

責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2023-08-30 08:01:28

MySQLGreatSQLdocker

2021-04-30 07:56:56

MySQL數據庫二進制包安裝

2022-07-18 09:01:15

SwiftApple二進制目標

2023-09-18 23:50:25

二進制文件裁剪Layout

2010-06-09 13:02:29

MySQL啟用二進制日

2010-10-13 15:45:23

MySQL二進制日志

2009-02-27 09:37:33

Google二進制代碼

2018-10-22 14:37:16

二進制數據存儲

2022-10-31 08:02:42

二進制計算乘法

2023-06-25 13:00:04

2015-07-21 11:43:14

CentosRPM

2009-12-16 10:49:42

Ruby操作二進制文件

2017-04-11 10:48:53

JS二進制

2022-07-26 13:00:01

安全符號源代碼

2009-08-12 18:06:53

C#讀取二進制文件

2025-04-02 11:30:00

MySQL二進制部署數據庫

2013-04-28 15:37:35

JBoss

2013-07-29 11:19:16

iOS開發iOS開發學習FMDB更新二進制圖片

2011-05-25 14:10:38

浮點數

2021-11-10 09:15:00

CPU01 二進制Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品呻吟久久av凹凸 | 日本a∨视频 | 精品亚洲永久免费精品 | 亚洲一区二区三区四区在线观看 | av永久| 日韩精品成人一区二区三区视频 | 国产精品视频播放 | 亚洲交性 | 国产内谢 | 91国在线视频 | www,黄色,com | 日韩一区二区三区精品 | 午夜视频免费在线观看 | 国产精品久久欧美久久一区 | 一区二区三区不卡视频 | 亚洲精品av在线 | 亚洲精品1区 | 免费观看黄色片视频 | 日韩欧美视频 | 久久三级影院 | 99pao成人国产永久免费视频 | 久久久www成人免费精品张筱雨 | 欧美日韩国产一区二区三区 | 国产人久久人人人人爽 | 在线成人www免费观看视频 | 日韩一级欧美一级 | 亚洲性视频| 国产成人精品久久二区二区91 | 免费1区2区3区 | 91偷拍精品一区二区三区 | 日本精品视频一区二区三区四区 | 欧美一区二区三区大片 | 一区二区三区视频在线观看 | 欧美成人精品一区二区三区 | 久久久久亚洲视频 | 日韩在线观看一区 | 少妇一区二区三区 | 成人免费视频在线观看 | 逼逼网 | 东京av男人的天堂 | 毛片在线视频 |