§ 编译源码安装
本文介绍如何利用Docker来(自动)编译GreatSQL源码并生成对应GreatSQL二进制包
若需要生成RPM包,可以参考这个文档在CentOS环境下编译GreatSQL RPM包 (opens new window)
本文介绍的运行环境是CentOS 8 x86_64,更多环境适配请自行修改Dockerfile及相关脚本中的参数。
$ cat /etc/redhat-release
CentOS Linux release 8.5.2111
$ uname -a
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
2
3
4
5
§ 准备工作
§ 配置 yum 源
开始编译之前,建议先配置好 yum 源,方便安装一些工具
# 直接替换yum源文件,并替换部分资源
$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
$ sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 删除其他无用的yum源文件
$ rm -f /etc/yum.repos.d/CentOS-Linux-*
#替换完后,更新缓存
$ yum clean all
$ yum makecache
2
3
4
5
6
7
8
9
10
§ 安装 Docker
下载 Docker 的 yum 源,并清理生成新的 yum 缓存
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
$ yum clean all
$ yum makecache
2
3
安装 Docker,启动 Docker 并验证版本
$ yum install -y docker-ce docker-ce-cli containerd.io
$ systemctl start docker
$ docker --version
Docker version 25.0.3, build 4debf41
2
3
4
§ 安装 Git
安装Git方便拉取仓库
$ yum install -y git
§ 拉取 GreatSQL-Docker 仓库
直接拉取GreatSQL-Docker 仓库 (opens new window),将仓库拉取到 /opt/
目录下:
$ cd /opt/
$ git clone https://gitee.com/GreatSQL/GreatSQL-Docker.git
$ cd GreatSQL-Docker
$ cd GreatSQL-Build
$ ls
Dockerfile README.md docker-entrypoint.sh greatsql-automake.sh patchelf-0.14.5.tar.gz rpcgen-1.3.1-4.el8.x86_64.rpm
2
3
4
5
6
或是只下载 GreatSQL-Docker 仓库 GreatSQL-Build 文件夹下的 Dockerfile 文件也行,Dockerfile 文件会自动从服务器上下载相应文件。
§ GreatSQL Build Docker镜像构建
$ docker build -t greatsql/greatsql_build .
上述命令会查找当前目录下的 Dockerfile 文件,并构建名为 greatsql/greatsql_build 的 Docker 镜像。
在构建镜像时,会自动从服务器上下载相应的源码包文件、初始化脚本等文件,并全自动化方式完成镜像构建工作。
由于镜像构建需要下载基础镜像并进行层层构建,受限于当前机器配置和网络环境,整个构建过程可能需要一定时间,请耐心等待。
§ GreatSQL Build Docker镜像使用
# 创建新容器
$ docker run -itd --hostname greatsql_build --name greatsql_build greatsql/greatsql_build bash
# 查看自动编译进展
$ docker logs greatsql_build
1. compile patchelf
2. entering greatsql automake
3. greatsql automake completed
drwxrwxr-x 13 mysql mysql 293 Feb 18 08:29 GreatSQL-8.0.32-25-centos-glibc2.28-x86_64
/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)
4. entering /bin/bash
2
3
4
5
6
7
8
9
10
11
12
出现4. entering /bin/bash
表示已经完成编译
由于编译过程需要大量计算资源,根据机器配置不同,可能需要的时间也不同,请耐心等待。
如果需要的话,可以将Docker容器中的二进制包文件拷贝到宿主机上,例如:
$ 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容器中,类似下面这样:
FROM centos:8
ENV LANG en_US.utf8
...
dnf install -y ${GREATSQL_BUILD_DOWNLOAD_URL}/${RPCGEN} > /dev/null 2>&1 && \
curl -o /${ENTRYPOINT} ${GREATSQL_BUILD_DOWNLOAD_URL}/${ENTRYPOINT} > /dev/null 2>&1 && \
...
chmod +x /docker-entrypoint.sh
#删除curl下载greatsql-automake.sh脚本工作,改成COPY
COPY ${GREATSQL_MAKESH} ${OPT_DIR}
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["bash"]
2
3
4
5
6
7
8
9
10
11
12
13
14
至此,GreatSQL二进制安装包就编译成功了,接下来可以参考文档二进制包安装并构建MGR集群继续进行数据库的初始化,以及MGR集群构建等工作,这里不赘述。
§ 相关资源和延伸阅读
greatsql_docker_build
仓库地址详见:https://gitee.com/GreatSQL/GreatSQL-Docker/tree/master/GreatSQL-Build (opens new window)
延伸阅读