编译源码安装


本文介绍如何利用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
  3. $ uname -a
  4. 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
  4. # 删除其他无用的yum源文件
  5. $ rm -f /etc/yum.repos.d/CentOS-Linux-*
  6. #替换完后,更新缓存
  7. $ yum clean all
  8. $ 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
  3. # 查看自动编译进展
  4. $ docker logs greatsql_build
  5. 1. compile patchelf
  6. 2. entering greatsql automake
  7. 3. greatsql automake completed
  8. drwxrwxr-x 13 mysql mysql 293 Feb 18 08:29 GreatSQL-8.0.32-25-centos-glibc2.28-x86_64
  9. /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)
  10. 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
  3. ...
  4. dnf install -y ${GREATSQL_BUILD_DOWNLOAD_URL}/${RPCGEN} > /dev/null 2>&1 && \
  5. curl -o /${ENTRYPOINT} ${GREATSQL_BUILD_DOWNLOAD_URL}/${ENTRYPOINT} > /dev/null 2>&1 && \
  6. ...
  7. chmod +x /docker-entrypoint.sh
  8. #删除curl下载greatsql-automake.sh脚本工作,改成COPY
  9. COPY ${GREATSQL_MAKESH} ${OPT_DIR}
  10. ENTRYPOINT ["/docker-entrypoint.sh"]
  11. 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