3 Star 7 Fork 9

万里数据库 / GreatSQL-Manual

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
6-install-with-source-code.md 5.44 KB
AI 代码解读
一键复制 编辑 原始数据 按行查看 历史
GreatSQL 提交于 2024-05-21 11:06 . 文档内容微调美化

编译源码安装


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

若需要生成RPM包,可以参考这个文档在CentOS环境下编译GreatSQL RPM包

本文介绍的运行环境是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

准备工作

配置 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

安装 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

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

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

安装 Git

安装Git方便拉取仓库

$ yum install -y git

拉取 GreatSQL-Docker 仓库

直接拉取GreatSQL-Docker 仓库,将仓库拉取到 /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

或是只下载 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

出现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"]

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

相关资源和延伸阅读

greatsql_docker_build 仓库地址详见:https://gitee.com/GreatSQL/GreatSQL-Docker/tree/master/GreatSQL-Build

延伸阅读

greatsql-wx

1
https://gitee.com/GreatSQL/GreatSQL-Manual.git
git@gitee.com:GreatSQL/GreatSQL-Manual.git
GreatSQL
GreatSQL-Manual
GreatSQL-Manual
master

搜索帮助