在Ubuntu下编译安装GreatSQL
在Ubuntu下编译安装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.list
deb 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。
我还准备了一份自动化编译GreatSQL的shell脚本,可以自取服用:
[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/Shanghai
ENV PATH="/usr/local/mysql/bin:${PATH}"
ENV LD_LIBRARY_PATH="/usr/loca/mysql/lib:${LD_LIBRARY_PATH}"
ENV TERM=xterm
COPY 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/Shanghai
RUN 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/mysql
COPY 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 install
COPY 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 install
COPY 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可戳下面链接参考:
此外,我把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)
这就编译完成了。
延伸阅读
- 玩转MySQL 8.0源码编译
- 将GreatSQL添加到系统systemd服务
- 利用GreatSQL部署MGR集群
- InnoDB Cluster+GreatSQL部署MGR集群
- 在Docker中部署GreatSQL并构建MGR集群
- ansible一键安装GreatSQL并构建MGR集群
- 在Docker中部署GreatSQL并构建MGR集群
全文完。
Enjoy GreatSQL
本文由博客一文多发平台 OpenWrite 发布!
在Ubuntu下编译安装GreatSQL的更多相关文章
- Ubuntu下编译安装postgreSQL 10.5
Ubuntu下编译安装postgreSQL 10.5 ubuntu 16.04 LTS系统postgreSQL 10.5 安装包准备 1.从PostgreSQL官网下载PostgreSQL的安装包 安 ...
- ubuntu下编译安装poco
系统环境: ubuntu版本:Linux jfcai-VirtualBox 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 ...
- [实践] ubuntu下编译安装ambari
ambari是一个Hadoop套件的管理工具,可以方便部署.管理及监控.最初开发时使用的就是RH系的Linux,只支持RHEL.CentOS5/6.OEL.SLES,暂不支持Ubuntu:可我的需求就 ...
- Ubuntu 下编译安装linux
1. 准备工作切换为管理员权限,sudo –i 输入用户密码 进入root 权限apt-get install build-essential kernel-package libncurses5-d ...
- linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录
过程记录 : 1.下载gsoap_2.8.17.zip 并 解压 : $unzip gsoap_2.8.17.zip 2.进入解压后的目录gsoap-2.8 3.自动配置编译环境: $ ...
- ubuntu 下编译安装 mysql php nginx 及常见错误 (持续添加)
mysql mysql 可以使用mysql 官方提供的apt源进行安装 参见这里 php 安装前先安装一些常见库 sudo apt-get install libpng16-16 libpng16-d ...
- ubuntu下编译安装mysql记录
搞了整整一天,好不容易折腾完,在此记录下,下次就省事了. 去官网http://www.php.net/downloads.php下载所需要的php版本,这里我选择5.6.22. ...
- ubuntu下编译安装PHP
首先配置configure // ./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --wit ...
- ubuntu下编译安装apache
官网http://httpd.apache.org/download.cgi下载apache源码包后 /*解包*/ gzip -d httpd-2_x_NN.tar.gz tar -xf httpd- ...
随机推荐
- 技术管理进阶——空降Leader如何开展工作?
原创不易,求分享.求一键三连 前几天有个粉丝咨询了一个的问题: 最近遇到一个空降Leader,挺苦恼的: 新Leader技术很厉害,但平时根本就不管我们,也不愿意了解业务,更像是一个技术顾问. 具体案 ...
- 跨域问题及其解决方法(JSONP&CORS)
一.什么是跨域 当a.qq.com域名下的页⾯或脚本试图去请求b.qq.com域名下的资源时,就是典型的跨域行为.跨域的定义从受限范围可以分为两种,⼴义跨域和狭义跨域. (一)广义跨域 ⼴义跨域通常包 ...
- .NET C#基础(5):结构体 - 高性能代码的基石
0. 文章目的 本文面向有一定.NET C#基础知识的学习者,介绍C#中结构体定义.使用以及特点. 1. 阅读基础 了解C#基本语法 了解.NET中的栈与托管堆 2. 值类型 2.1 .N ...
- redis相关知识点
redis 的相关知识点 启动 启动代码 redis-cli -a 密码 通用命令 expire: 设置有效期 expire name 10 key key * 相关数据类型 String set:添 ...
- vue2和vue3生命周期的区别
概念 首先,我们了解一下"生命周期"这个词.通俗的来说,生命周期就是一个事务从出生到消失的过程.例如,一个人从出生到去世.在vue中,vue的生命周期是指,从创建vue对象到销毁v ...
- OpenCloudOS使用snap安装.NET 6
开源操作系统社区 OpenCloudOS 由腾讯与合作伙伴共同倡议发起,是完全中立.全面开放.安全稳定.高性能的操作系统及生态.OpenCloudOS 沉淀了多家厂商在软件和开源生态的优势,继承了腾讯 ...
- SAP OOALV- 合计
TYPES: BEGIN OF ty_mara, srno LIKE adrc-name1, " Storing the total text matnr LIKE mara-matnr, ...
- SAP OLE download to excel
REPORT RSDEMO01 NO STANDARD PAGE HEADING. * this report demonstrates how to send some ABAP data to a ...
- Java模拟西宝高速公路
@ 目录 写在前面 一.仿真模拟的具体要求 二.类的设计 2.1 抽象父类PubVehicles 2.2 Expressway类 2.3 Passenger类 2.4 Timer类 2.5 Displ ...
- Java 常用Set集合和常用Map集合
目录 常用Set集合 Set集合的特点 HashSet 创建对象 常用方法 遍历 常用Map集合 Map集合的概述 HashMap 创建对象 常用方法 遍历 HashMap的key去重原理 常用Set ...