本文首发于GreatSQL社区,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

  • 1、准备工作

    • 1.1、配置Ubuntu环境下的apt源配置文件

    • 1.2、构建docker镜像

  • 2、编译GreatSQL

本次介绍如何利用Docker构建Ubuntu环境,并将GreatSQL源码编译成二进制文件。

1、准备工作

先创建本次Docker的workdir为 /data/docker-ubuntu:

[root@greatsql ~]# mdkir /data/docker-ubuntu

1.1、配置Ubuntu环境下的apt源配置文件

开始编译之前,建议先配置好apt源,这样后续部署环境下载软件包时速度更快。

以阿里、腾讯两大云主机为例,可以这样配置(两个apt源自行二选一):

#腾讯云
[root@greatsql ~]# cat /data/docker-ubuntu/ubuntu-20.4-sources.listdeb http://mirrors.cloud.tencent.com/ubuntu/ focal main restricted
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-updates main restricted
deb http://mirrors.cloud.tencent.com/ubuntu/ focal universe
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-updates universe
deb http://mirrors.cloud.tencent.com/ubuntu/ focal multiverse
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-updates multiverse
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-security main restricted
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-security universe
deb http://mirrors.cloud.tencent.com/ubuntu/ focal-security multiverse

如果是阿里云的话换成下面的内容

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal universe
deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse

这个文件先准备好,后面会在Dockerfile里会用到它。

另外,从我自己测试的情况,在构建docker镜像的过程中,阿里云的源更容易出错,请自行测试选定。

安装Docker,下载boost、GreatSQL源码包等这些工作我直接略过了,可直接参考这篇文档:在Linux下源码编译安装GreatSQL (https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/build-greatsql-with-source.md)。

我还准备了一份自动化编译GreatSQL的shell脚本(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/Dockerfile/greatsql-automake.sh),可以自取使用:

[root@greatsql ~]# cat /data/docker-ubuntu/greatsql-automake.sh#!/bin/bash
MAJOR_VERSION=8
MINOR_VERSION=0
PATCH_VERSION=25
RELEASE=15
REVISION=`date +%Y%m%d%H%M`
BASE_DIR=/usr/local/GreatSQL-8.0.25
JOBS=16
#reversion=`echo $RANDOM | sha256sum | cut -c1-11` && echo $reversion;
cmake . -DBOOST_INCLUDE_DIR=../boost_1_73_0 -DCMAKE_INSTALL_PREFIX=${BASE_DIR} -DWITH_ZLIB=bundled \
-DWITH_NUMA=ON -DFORCE_INSOURCE_BUILD=1 -DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release \
-DCOMPILATION_COMMENT="GreatSQL (GPL), Release ${RELEASE}, Revision ${REVISION}" \
-DWITH_TOKUDB=OFF -DWITH_ROCKSDB=OFF -DWITH_COREDUMPER=OFF \
-DMAJOR_VERSION=${MAJOR_VERSION} -DMINOR_VERSION=${MINOR_VERSION} -DPATCH_VERSION=${PATCH_VERSION} && \
make -j${JOBS} VERBOSE=1 && make install

1.2、构建docker镜像

用下面这份Dockerfile构建Ubuntu镜像:

FROM ubuntu
ENV LANG en_US.utf8
ARG UID=1001
ARG GID=1001
ARG UNAME=mysql
#ENV TZ Asia/ShanghaiENV PATH="/usr/local/mysql/bin:${PATH}"
ENV LD_LIBRARY_PATH="/usr/loca/mysql/lib:${LD_LIBRARY_PATH}"
ENV TERM=xtermCOPY ubuntu-20.4-sources.list /etc/apt/sources.list#RUN apt-get update && apt-get install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
RUN apt update && apt install -y --no-install-recommends tzdata && rm -rf /var/lib/apt/lists/*
ENV TZ Asia/ShanghaiRUN apt update -y && apt upgrade -y && \
apt install -y --fix-missing gcc-10 cmake automake build-essential diffutils git lbzip2 libaio-dev libbison-dev \
libcurl4-openssl-dev libevent-dev libexpat1-dev libffi-dev libgflags-dev libgtest-dev libjemalloc-dev \
libldap2-dev liblz4-dev libncurses-dev libnuma-dev libreadline-dev libsnappy-dev libssh-dev libtirpc-dev \
libtool libxml2-dev libzstd-dev make net-tools numactl pkg-config psmisc vim wget \
&& groupadd -g $GID -o $UNAME && useradd -m -g $GID -u $UID -o -s /bin/bash $UNAME \
&& /usr/bin/install -m 0775 -o mysql -g root -d /var/lib/mysql /var/run/mysqld /docker-entrypoint-initdb.d \
&& /usr/bin/install -m 0664 -o mysql -g root /dev/null /etc/sysconfig/mysqlCOPY patchelf-0.12.tar.gz /tmp/
RUN cd /tmp && tar -xzvf patchelf-0.12.tar.gz && cd patchelf-0.12 && ./bootstrap.sh && ./configure && make && make installCOPY rpcsvc-proto-1.4.tar.gz /tmp/rpcsvc-proto-1.4.tar.gz
RUN tar zxvf /tmp/rpcsvc-proto-1.4.tar.gz -C /tmp && cd /tmp/rpcsvc-proto-1.4/ && ./configure && make && make installCOPY boost_1_73_0.tar.gz /opt/
COPY greatsql-automake.sh /opt/RUN rm -fr /tmp/*

开始构建docker镜像,成功后再保存到本地并导入本地镜像:

[root@greatsql ~]# docker build -t docker-ubuntu .
... ...
[root@greatsql ~]# docker save -o docker-ubuntu.tar docker-ubuntu
[root@greatsql ~]# docker load -i docker-ubuntu.tar

创建一个docker容器,并将GreatSQL源码包copy进去:

[root@greatsql ~]# docker run -itd --name greatsql --hostname=greatsql docker-ubuntu
[root@greatsql ~]# docker cp /opt/greatsql-8.0.25-15.tar.gz greatsql:/opt/
[root@greatsql ~]# docker exec -it greatsql bash
[root@greatsql /]# ls -l /opt/
-rw------- 1 root root 128699082 Jul 27 06:56 boost_1_73_0.tar.gz
-rw------- 1 1000 1000 526639994 Jul 27 05:59 greatsql-8.0.25-15.tar.gz
-rw-r--r-- 1 root root        751 Nov 12 15:25 greatsql-automake.sh

其他不同OS及架构平台下的Dockerfile可戳下面链接参考:

  • Dockerfile-centos7-x86  (https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/Dockerfile/Dockerfile-centos7-x86)

  • Dockerfile-centos8-x86  (https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/Dockerfile/Dockerfile-centos8-x86)

  • Dockerfile-centos7-arm  (https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/Dockerfile/Dockerfile-centos7-arm)

  • Dockerfile-centos8-arm  (https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/build-gs/Dockerfile/Dockerfile-centos8-arm)

此外,我把Docker镜像文件包也放到网盘上共享了,有兴趣的也可直接下载:

  • 【百度云盘】链接: https://pan.baidu.com/s/188iZ_vT4iEV7kMopgcYEFg  提取码: 8c22

2、编译GreatSQL

进入容器后,解压GreatSQL和boost源码包:

[root@greatsql /]# tar zxf /opt/greatsql-8.0.25-15.tar.gz -C /opt
[root@greatsql /]# tar zxf /opt/boost_1_73_0.tar.gz -C /opt/

可直接调用自动化编译脚本开始编译,也可以自行手动编译:

[root@greatsql /]# cd /opt/greatsql-8.0.25
[root@greatsql /]# /bin/bash /opt/greatsql-automake.sh
...

编译完成后,就会将二进制文件安装到 /usr/local/GreatSQL-8.0.25 目录下,执行下面的命令检查测试:

[root@greatsql /]# /usr/local/GreatSQL-8.0.25/bin/mysqld --verbose --version
/usr/local/GreatSQL-8.0.25/bin/mysqld  Ver 8.0.25-15 for Linux on x86_64 (GreatSQL (GPL), Release 15, Revision 202111121536)

这就编译完成了。

全文完。

Enjoy GreatSQL :)


《实战MGR》视频课程

戳此小程序即可直达B站或腾讯课堂

或复制链接在浏览器中打开

  • https://ke.qq.com/course/3677969

  • https://space.bilibili.com/1363850082


文章推荐:

  • 面向金融级应用的GreatSQL正式开源

  • Changes in GreatSQL 8.0.25 (2021-8-26)

  • GreatSQL重磅特性,InnoDB并行查询优化测试

  • SQL案例分析之部分查询和全部查询

  • 一周碎碎念,2021.11.7,两个MGR集群间还可以构建传统的主从复制通道吗

  • Percona XtraBackup 8.0.26实战大全

  • 一条sql语句慢在哪之抓包分析

  • 技术分享 | Update更新慢、死锁等问题的排查思路分享

  • 在Linux下源码编译安装GreatSQL/MySQL


点击文末“阅读原文”直达老叶专栏

技术分享|在Ubuntu下编译安装GreatSQL相关推荐

  1. 在Ubuntu下编译安装atom编辑器

    2019独角兽企业重金招聘Python工程师标准>>> 今天一大早就在开源中国首页看到了atom编辑器可以下载使用的消息,打开一看只提供Mac版的安装包.于是去Github上看了看, ...

  2. ubuntu下编译安装PHP扩展

    在ubuntu下已经安装了PHP环境的情况下,需要新增PHP扩展 首先找到PHP对应版本的扩展包,部分扩展包可以前往PHP官网下载对应版本的PHP源码,在ext文件夹下有一些扩展包 其他额外的扩展需要 ...

  3. python3.7.2安装-ubuntu下编译安装Python3.7.2

    Ubuntu下安装Python3.7.2 1.去官网下载Python3.7.2 首先到要安装的文件夹下创建安装目录 mkdir /usr/local/bin/python3.7 切到要下载的文件夹下: ...

  4. ubuntu下编译安装mysql记录

    搞了整整一天,好不容易折腾完,在此记录下,下次就省事了.      去官网http://www.php.net/downloads.php下载所需要的php版本,这里我选择5.6.22.      下 ...

  5. Linux飞鸽传书源码,图解Ubuntu下编译安装飞鸽传书IPMsg步骤

    因为IPMsg官方网站发布的Unix/Linux版本都是源代码包,需要在Ubuntu中编译,因此,需要在本机安装开发环境. 我下载的g2ipmsg-0.9.5.tar,下载地址见http://www. ...

  6. centos/Debian/Ubuntu下编译安装pypy

    PyPy的速度是比Python快的,根据官方说法,速度时CPython的2倍-10倍. 但PyPy也是有缺点的,那就是PyPy是由RPython实现的,RPython是Python的子集. PyPy快 ...

  7. ubuntu下编译安装PHP

    首先配置configure // ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --wit ...

  8. QML之ubuntu下编译安装虚拟键盘中文输入法

    写在前面 1.一个兼容性问题:ubuntu14.04 + qt5.7以上版本开发时会遇到各种问题,多是由于类似于编译器等版本过低或者不兼容导致.建议使用ubuntu16.04 + qt5.9开发,两个 ...

  9. Adam学习21之在Ubuntu下编译安装记录

    环境: adam-2.10.0.19 clean package test install 1.Ubuntu下对adam进行mvn clean package -DskipTests xubo@xub ...

最新文章

  1. android opencv 书籍,opencv android
  2. java环境变量(win10 java8)
  3. C# Winform程序中使用TeeChart实现简单的图表展示
  4. position: relative;导致页面卡顿
  5. P2617 Dynamic Rankings 整体二分
  6. matlab利用工作区的变量画图,在使用MATLAB“绘图”选项卡中的命令按钮绘图之前,需要( )。 答案:在工作区中选择绘图变量...
  7. 线性电阻软件的伏安特性曲线测试,线性电阻和非线性电阻的伏安特性曲线
  8. [教程] 基于时间盲注的python3脚本编写
  9. 尚硅谷YYDS (视频连接)
  10. 修复未能连接一个window服务器,未能连接一个windows服务的修复方法
  11. 浙江大学的计算机考研难度,浙江大学部分专业考研难度分析
  12. 微信内隐藏的一个修复功能
  13. 基于SOME/IP的AP AUTOSAR实战步骤
  14. 第四章 序列式容器(sequence containers)
  15. reactor模式学习
  16. 处理射手网字幕,方便打印
  17. bzoj 3811: 玛里苟斯(期望+线性基)
  18. ios apple语音性别_iOS 14:Apple终于听了
  19. Word插入圆圈数字
  20. 基于jsp,ssm公交查询系统

热门文章

  1. dlna投屏显示服务器没互动,投屏时,提示没搜索到电视
  2. 计算机专业可以当剪辑师,北京剪辑短视频(剪辑师一个月能拿多少工资)
  3. cadence版图LVS通过不了
  4. SATA硬盘 IDE硬盘混用设置
  5. openCV 隔帧读取视频帧的方式
  6. Linux配置yum源(本地源和网络源)
  7. Windows 11 支持的 Intel 处理器
  8. esp32使用MicroPython驱动oled屏显示中文和英文
  9. python读取json文件制作中国人口地图_Python对JSON文件世界人口数据进行可视化
  10. python编写游戏300行代码_300行代码实现Python游戏:俄罗斯方块