编译源码安装
本次介绍如何利用Docker来编译GreatSQL源码。
1. 下载GreatSQL源码及Docker压缩包
1.1 下载Docker编译环境压缩包
戳此下载
(opens new window)GreatSQL Docker编译环境压缩包greatsql_docker_build.tar.xz
(opens new window)。
将压缩包放在 /opt/ 目录下:
1. $ cd /opt/
2. $ tar xf greatsql_docker_build-8032.tar.xz
3. $ cd greatsql_docker_build
4. $ ls
5. Dockerfile greatsql-automake.sh greatsql-docker-build.sh patchelf-0.12.tar.gz rpcsvc-proto-1.4.tar.gz
下载 boost_1_77_0 源码包:
1. $ pwd
2. /opt/greatsql_docker_build
3. $ curl -o boost_1_77_0.tar.gz https://nchc.dl.sourceforge.net/project/boost/boost/1.77.0/boost_1_77_0.tar.gz
4. $ ls
5. boost_1_77_0.tar.gz Dockerfile greatsql-automake.sh greatsql-docker-build.sh patchelf-0.12.tar.gz rpcsvc-proto-1.4.tar.gz
1.2 下载GreatSQL源码
戳此下载
(opens new window)GreatSQL源码压缩包,解压缩后放在 /opt 目录下。
2. 构建Docker编译环境
执行脚本 greatsql_docker_build.sh 开始构建Docker编译环境:
1. $ cd /opt/greatsql_docker_build
2. $ sh ./greatsql-docker-build.sh /opt/greatsql-8.0.32-24
执行脚本后面带的参数 /opt/greatsql-8.0.32-24 是指GreatSQL源码所在目录。 之后就会自动开始构建Docker环境了:
1. $ sh ./greatsql-docker-build.sh /opt/greatsql-8.0.32-24
2. Sending build context to Docker daemon 411.9MB
3. Step 1/14 : FROM centos
4. ---> 5d0da3dc9764
5. Step 2/14 : ENV container docker
6. ---> Using cache
7. ---> 49a38409329a
8. ...
9. Step 14/14 : COPY boost_1_77_0.tar.gz /opt/
10. ---> 55a506d50850
11. Successfully built 55a506d50850
12. Successfully tagged greatsql_build_env:latest
13. Docker build success!you can run it:
15. docker run -d -v /opt/greatsql-8.0.32-24:/opt/greatsql-8.0.32-24 greatsql_build_env
3. 进入Docker容器编译GreatSQL
根据上面的提示,创建一个新容器用于编译GreatSQL:
1. $ docker run -d -v /opt/greatsql-8.0.32-24:/opt/greatsql-8.0.32-24 greatsql_build_env
2. cc6500484dad5c905f00167e274f833bb722eff83269a51a2eb058013aaccfb4
找到正确的容器ID,进入该容器,准备开始编译:
1. $ docker ps -a | grep greatsql_build
2. cc6500484dad greatsql_build_env "/usr/sbin/init" 2 minutes ago Up 2 minutes strange_borg
4. $ docker exec -it cc6500484dad bash
5. [root@cc6500484dad /]#
6. [root@cc6500484dad /]# cd /opt
7. [root@cc6500484dad opt]# ls
8. boost_1_77_0.tar.gz greatsql-8.0.32-24 greatsql-automake.sh rh
9. [root@cc6500484dad opt]# tar zxf boost_1_77_0.tar.gz
编辑 /opt/greatsql-automake.sh 脚本,确认其中文件目录、版本号等信息是否正确:
1. #!/bin/bash
2. MAJOR_VERSION=8
3. MINOR_VERSION=0
4. PATCH_VERSION=32
5. RELEASE=24
6. REVISION=3714067bc8c
7. GLIBC=`ldd --version | head -n 1 | awk '{print $NF}'`
8. ARCH=`uname -p`
9. OS=`grep '^ID=' /etc/os-release | sed 's/.*"\{.*\)".*/\1/ig'`
10. #OS=Linux
11. PKG_NAME=GreatSQL-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}-${OS}-glibc${GLIBC}-${ARCH}
12. BASE_DIR=/usr/local/${PKG_NAME}
13. BOOST_VERSION=1_77_0
14. SOURCE_DIR=greatsql-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}
15. ...
确认都没问题的话,就可以执行该脚本开始编译源码了:
1. # 记得执行这步,切换到gcc 10/11编译环境下
2. $ source ~/.bash_profile
3. $ time sh /opt/greatsql-automake.sh
5. -- Running cmake version 3.20.2
6. -- Found Git: /usr/bin/git (found version "2.27.0")
7. CMake Deprecation Warning at cmake/cmake_policies.cmake:54 (CMAKE_POLICY):
8. The OLD behavior for policy CMP0075 will be removed from a future version
9. of CMake.
10. ...
11. -- Up-to-date: /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64/man/man8/mysqld.8
12. -- Up-to-date: /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64/man/man1/mysqlrouter.1
13. -- Up-to-date: /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64/man/man1/mysqlrouter_passwd.1
14. -- Up-to-date: /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64/man/man1/mysqlrouter_plugin_info.1
编译过程中如果没问题,就会在 /usr/local 目录下生成GreatSQL二进制安装文件,例如:
1. $ ls /usr/local/GreatSQL-8.0.32-24-Linux-glibc2.28-x86_64
2. bin docs lib LICENSE.router man mysql-test README.md-test run support-files var
3. cmake include LICENSE LICENSE-test mysqlrouter-log-rotate README.md README.router share usr
至此,GreatSQL二进制安装包就编译成功了,接下来可以参考文档二进制包安装并构建MGR集群继续进行数据库的初始化,以及MGR集群构建等工作,这里不赘述。
4. 相关资源
greatsql_docker_build 最新版本详见:https://gitee.com/GreatSQL/GreatSQL-Doc/tree/master/greatsql_docker_build
(opens new window)。
延伸阅读
- 在Linux下源码编译安装GreatSQL
(opens new window) - 麒麟OS+龙芯环境编译GreatSQL
(opens new window) - openEuler、龙蜥Anolis、统信UOS系统下编译GreatSQL二进制包
(opens new window)
问题反馈
联系我们
扫码关注微信公众号

