
在Linux下源码编译安装GreatSQL/MySQL
0、提纲
● 1、准备工作
● 1.1、配置yum源
● 1.2、安装docker
● 1.3、提前下载几个必要的安装包
● 1.4、构建docker镜像
● 2、编译GreatSQL
● 2.1、只编译二进制文件
● 2.2、编译并打包成二进制文件包或RPM包
● 3、初始化GreatSQL
● 4、搭建MGR集群
● 延伸阅读
本次介绍如何利用Docker来将GreatSQL源码编译成二进制文件,以及制作二进制包、RPM包等。
本文介绍的运行环境是CentOS 7.9:
1、准备工作
1.1、配置yum源
开始编译之前,建议先配置好yum源,方便安装一些工具。
以阿里、腾讯两大云主机为例,可以这样配置(两个yum源自行二选一):
1.2、安装docker
安装docker,并启动docker进程。
1.3、提前下载几个必要的安装包
分别下载几个编译过程中需要的依赖包:
● boost, https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz
● git, https://github.com/git/git/archive/v2.27.0.tar.gz, 下载后重命名为 git-v2.27.0.tar.gz
● patchelf, https://github.com/NixOS/patchelf/archive/refs/tags/0.12.tar.gz, 下载后重命名为 patchelf-0.12.tar.gz
● rpcsvc-proto, https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
下载GreatSQL源码包:https://gitee.com/GreatSQL/GreatSQL/archive/greatsql-8.0.25-15.tar.gz
1.4、构建docker镜像
用下面这份Dockerfile构建镜像,这里以CentOS 7为例:
开始构建docker镜像,成功后再保存到本地并导入本地镜像:
创建一个docker容器,并将GreatSQL源码包copy进去:
2、编译GreatSQL
进入容器后,解压GreatSQL和boost源码包:
2.1、只编译二进制文件
如果只是想在本机使用,则可以只编译出二进制文件即可,无需打包或制作RPM包。用下面的命令进行编译:
cmake过程如果没报错,就会输出类似下面的结果:
接下来可以开始正式编译了:
参数 -j30 设定为并行编译的逻辑CPU数量,可以指定为比逻辑CPU总数少一点,不要把所有CPU都跑满。
编译完成后,就会将二进制文件安装到 /usr/local/GreatSQL-8.0.25-15-Linux.x86_64 目录下。
2.2、编译并打包成二进制文件包或RPM包
如果是想要在编译完后也能拷贝到其他服务器上使用,也可以直接编译生成二进制包或RPM包,可以用下面的命令编译:
编译过程中如果遇到类似下面的patchelf报错:
可以参考这个patch:patchelf: Fix alignment issues with contiguous note sections #275,修改下源码,在容器里重新手动编译patchelf。
编译结束后,就会在 /opt/greatsql-8.0.25-15/build-gs/workdir/ 目录下生成相应的二进制包、RPM包:
这就可以用在copy到其他服务器上安装使用了。
3、初始化GreatSQL
本次计划在下面3台服务器上部署MGR集群:
先在nodeA服务器上执行下面的初始化工作,另外两个服务器也照做一遍即可。
首先编辑 /etc/my.cnf 配置文件,可参考采用下面的配置参数:
执行下面的命令进行初始化:
初始化时可选项有 --initialize 和 --initialize-insecure 两种,前者会为root账号生成一个随机密码,后者不会。在这里为了省事,选用后者,生产环境里请务必要为root用户设置安全密码。
之后就可以启动mysqld进程了:
GreatSQL是基于Percona Server的分支版本,默认情况下需要用到jemalloc这个库,如果启动过程中报告类似下面的错误,只需要再安装jemalloc或者libaio等相关的软件包即可:
补充安装libjemalloc库即可:
如果想要关闭mysqld进程,执行下面的命令即可:
查看版本号:
这就启动GreatSQL服务了,接下来同样的方法,完成另外两个服务器上的GreatSQL初始化并启动,然后开始构建MGR集群。
另外,也可以参考这篇指南"将GreatSQL添加到系统systemd服务",把GreatSQL加入系统systemd服务中。
4、搭建MGR集群
● MGR集群的部署可以自己手动一步步操作,也可通过MySQL Shell快速完成,分别参考下面的文档即可:
● 利用GreatSQL部署MGR集群
● InnoDB Cluster+GreatSQL部署MGR集群
● ansible一键安装GreatSQL并构建MGR集群
● 在Docker中部署GreatSQL并构建MGR集群
延伸阅读
● 玩转MySQL 8.0源码编译
● 将GreatSQL添加到系统systemd服务
● 利用GreatSQL部署MGR集群
● InnoDB Cluster+GreatSQL部署MGR集群
● 在Docker中部署GreatSQL并构建MGR集群
Enjoy GreatSQL :)
文章转载自公众号:GreatSQL社区
