编译源码安装


本文介绍如何利用Docker来(自动)编译GreatSQL源码并生成对应GreatSQL二进制包

若需要生成RPM包,可以参考这个文档在CentOS环境下编译GreatSQL RPM包编译源码安装 - 图1 (opens new window)

本文介绍的运行环境是CentOS 8 x86_64,更多环境适配请自行修改Dockerfile及相关脚本中的参数。

1. $ cat /etc/redhat-release
2. CentOS Linux release 8.5.2111

4. $ uname -a
5. Linux gip 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

1. 准备工作

1.1 配置 Yum 源

开始编译之前,建议先配置好 Yum 源,方便安装一些工具

1. # 直接替换yum源文件,并替换部分资源
2. $ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
3. $ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

5. # 删除其他无用的yum源文件
6. $ rm -f /etc/yum.repos.d/CentOS-Linux-*

8. #替换完后,更新缓存
9. $ yum clean all
10. $ yum makecache

1.2 安装 Docker

下载 Docker 的 Yum 源,并清理生成新的 Yum 缓存

1. $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2. $ yum clean all
3. $ yum makecache

安装 Docker,启动 Docker 并验证版本

1. $ yum install -y docker-ce docker-ce-cli containerd.io
2. $ systemctl start docker
3. $ docker --version
4. Docker version 25.0.3, build 4debf41

1.3 安装 Git

安装Git方便拉取仓库

1. $ yum install -y git

2. 拉取 GreatSQL-Docker 仓库

直接拉取GreatSQL-Docker 仓库编译源码安装 - 图2 (opens new window),将仓库拉取到 /opt/ 目录下:

1. $ cd /opt/
2. $ git clone https://gitee.com/GreatSQL/GreatSQL-Docker.git
3. $ cd GreatSQL-Docker
4. $ cd GreatSQL-Build
5. $ ls
6. Dockerfile  README.md  docker-entrypoint.sh  greatsql-automake.sh  patchelf-0.14.5.tar.gz  rpcgen-1.3.1-4.el8.x86_64.rpm

或是只下载 GreatSQL-Docker 仓库 GreatSQL-Build 文件夹下的 Dockerfile 文件也行,Dockerfile 文件会自动从服务器上下载相应文件。

3. GreatSQL Build Docker镜像构建

1. $ docker build -t greatsql/greatsql_build .

上述命令会查找当前目录下的 Dockerfile 文件,并构建名为 greatsql/greatsql_build 的 Docker 镜像。

在构建镜像时,会自动从服务器上下载相应的源码包文件、初始化脚本等文件,并全自动化方式完成镜像构建工作。

由于镜像构建需要下载基础镜像并进行层层构建,受限于当前机器配置和网络环境,整个构建过程可能需要一定时间,请耐心等待。

4. GreatSQL Build Docker镜像使用

1. # 创建新容器
2. $ docker run -itd --hostname greatsql_build --name greatsql_build greatsql/greatsql_build bash

4. # 查看自动编译进展
5. $ docker logs greatsql_build

7. 1. compile patchelf
8. 2. entering greatsql automake
9. 3. greatsql automake completed
10. drwxrwxr-x 13 mysql mysql       293 Feb 18 08:29 GreatSQL-8.0.32-25-centos-glibc2.28-x86_64
11. /opt/GreatSQL-8.0.32-25-centos-glibc2.28-x86_64/bin/mysqld  Ver 8.0.32-25 for Linux on x86_64 (GreatSQL, Release 25, Revision 79f57097e3f)
12. 4. entering /bin/bash

出现4. entering /bin/bash表示已经完成编译

由于编译过程需要大量计算资源,根据机器配置不同,可能需要的时间也不同,请耐心等待。

如果需要的话,可以将Docker容器中的二进制包文件拷贝到宿主机上,例如:

1. $ docker cp greatsql_build:/opt/GreatSQL-8.0.32-25-centos-glibc2.28-x86_64 /usr/local/

如果宿主机环境也是CentOS 8 x86_64的话,这就可以在宿主机环境下直接使用该二进制文件包了。

如果需要自定义编译参数,可以在 greatsql-automake.sh 脚本自行修改,然后删除 Dockerfile 第50行附近,在最后改成 COPY 方式,把在本地修改后的文件拷贝到Docker容器中,类似下面这样:

1. FROM centos:8
2. ENV LANG en_US.utf8

4. ...
5. dnf install -y ${GREATSQL_BUILD_DOWNLOAD_URL}/${RPCGEN} > /dev/null 2>&1 && \
6. curl -o /${ENTRYPOINT} ${GREATSQL_BUILD_DOWNLOAD_URL}/${ENTRYPOINT} > /dev/null 2>&1 && \
7. ...
8. chmod +x /docker-entrypoint.sh

10. #删除curl下载greatsql-automake.sh脚本工作,改成COPY
11. COPY ${GREATSQL_MAKESH} ${OPT_DIR}

13. ENTRYPOINT ["/docker-entrypoint.sh"]
14. CMD ["bash"]

至此,GreatSQL二进制安装包就编译成功了,接下来可以参考文档二进制包安装并构建MGR集群继续进行数据库的初始化,以及MGR集群构建等工作,这里不赘述。

5. 相关资源和延伸阅读

greatsql_docker_build 仓库地址详见:https://gitee.com/GreatSQL/GreatSQL-Docker/tree/master/GreatSQL-Build编译源码安装 - 图3 (opens new window)

延伸阅读

问题反馈

联系我们

扫码关注微信公众号

greatsql-wx