为了更好地支持更多操作系统及相关生态,GreatSQL社区决定发布openEuler、龙蜥Anolis、统信UOS三个操作系统下的GreatSQL二进制包。相应的二进制包可以访问gitee.com上的 GreatSQL项目 https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.25-17下载。

本文简要记录在这三个操作系统下编译GreatSQL二进制包的过程。

  • 1. 编译环境

  • 2. 编译前准备工作

  • 3. 编译GreatSQL

  • 4. 初始化并启动GreatSQL数据库

  • 5. 运行sysbench测试

  • 附录:编译sysbench


1. 编译环境

本次编译都是采用鲲鹏916这个型号的CPU(泰山2280服务器系列):

$ lscpuArchitecture:          aarch64Byte Order:            Little EndianCPU(s):                64On-line CPU(s) list:   0-63Thread(s) per core:    1Core(s) per socket:    32Socket(s):             2NUMA node(s):          4Model:                 2BogoMIPS:              100.00L1d cache:             32KL1i cache:             48KL2 cache:              1024KL3 cache:              16384KNUMA node0 CPU(s):     0-15NUMA node1 CPU(s):     16-31NUMA node2 CPU(s):     32-47NUMA node3 CPU(s):     48-63Flags:                 fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid

上述 lscpu 是在物理机上执行的,实际编译环境则是在这个物理机上运行的虚机中,分配了8个CPU、16G内存。

查看操作系统发行版本

openEuler

$ cat /etc/os-releaseNAME="openEuler"VERSION="22.03 LTS"ID="openEuler"VERSION_ID="22.03"PRETTY_NAME="openEuler 22.03 LTS"ANSI_COLOR="0;31"

龙蜥Anolis

$ cat /etc/os-releaseNAME="Anolis OS"VERSION="8.6"ID="anolis"ID_LIKE="rhel fedora centos"VERSION_ID="8.6"PLATFORM_ID="platform:an8"PRETTY_NAME="Anolis OS 8.6"ANSI_COLOR="0;31"HOME_URL="https://openanolis.cn/"

统信UOS

$ cat /etc/os-releasePRETTY_NAME="UnionTech OS Server 20"NAME="UnionTech OS Server 20"VERSION_ID="20"VERSION="20"ID="uos"HOME_URL="https://www.chinauos.com/"BUG_REPORT_URL="https://bbs.chinauos.com/"VERSION_CODENAME="kongzi"PLATFORM_ID="platform:uelc20"[root@yejr-uos-aarch64 ~]#[root@yejr-uos-aarch64 ~]#$ cat /etc/uos-releaseUnionTech OS Server release 20 (kongzi)

并且都采用OS中预设的默认YUM源

$ cat openEuler.repo#generic-repos is licensed under the Mulan PSL v2.#You can use this software according to the terms and conditions of the Mulan PSL v2.#You may obtain a copy of Mulan PSL v2 at:#    http://license.coscl.org.cn/MulanPSL2#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR#PURPOSE.#See the Mulan PSL v2 for more details.[OS]name=OSbaseurl=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler[everything]name=everythingbaseurl=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/enabled=1gpgcheck=1gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler...

龙蜥Anolis

$ cat AnolisOS-AppStream.repo[AppStream]name=AnolisOS-$releasever - AppStreambaseurl=http://mirrors.openanolis.cn/anolis/$releasever/AppStream/$basearch/osenabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ANOLISgpgcheck=1

统信UOS

$ cat UniontechOS.repo[UniontechOS-$releasever-AppStream]name = UniontechOS $releasever AppStreambaseurl = https://enterprise-c-packages.chinauos.com/server-enterprise-c/kongzi/1050/AppStream/$basearchenabled = 1username=$auth_upassword=$auth_pgpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-uos-releasegpgcheck = 0skip_if_unavailable = 1[UniontechOS-$releasever-BaseOS]name = UniontechOS $releasever BaseOSbaseurl = https://enterprise-c-packages.chinauos.com/server-enterprise-c/kongzi/1050/BaseOS/$basearchenabled = 1username=$auth_upassword=$auth_pgpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-uos-releasegpgcheck = 0skip_if_unavailable = 1...

2. 编译前准备工作

参考文档 麒麟OS+龙芯环境编译GreatSQL,提前安装必要的一些基础包

    $ dnf makecache$ dnf install --skip-broken -y automake bison bison-devel boost-devel bzip2 bzip2-devel clang \cmake cmake3 diffutils expat-devel file flex gcc gcc-c++ git jemalloc jemalloc-devel \graphviz libaio-devel libarchive libcurl-devel libevent libevent-devel libverto-libevent libevent-doc libffi-devel libicu-devel libssh \libtirpc libtirpc-devel libtool libxml2-devel libzstd libzstd-devel lz4-devel \lz4-static make ncurses-devel ncurses-libs net-tools numactl numactl-devel numactl-libs openldap-clients \openldap-devel openssl openssl-devel pam pam-devel perl perl-Env perl-JSON perl-Memoize \perl-Time-HiRes pkg-config psmisc re2-devel readline-devel \snappy-devel tar time unzip vim wget zlib-devel

openEuler下就可以根据安装文档麒麟OS+龙芯环境编译GreatSQL中列出的所有包,包括 jemalloc 包。

下载安装jemalloc rpm包(rpm包依赖glibc版本,可能无法直接使用,可以自行下载源码包编译)

  • https://fedora.pkgs.org/36/fedora-aarch64/jemalloc-5.2.1-7.fc36.aarch64.rpm.html

  • https://fedora.pkgs.org/36/fedora-aarch64/jemalloc-devel-5.2.1-7.fc36.aarch64.rpm.html

  • 源码包 https://sourceforge.net/projects/jemalloc.mirror/files/

当然了,jemalloc并库不是必须的,用它的好处是可以优化内存管理性能等。有条件的话尽量启用,实在搞不定就放弃。

如果需要手动编译安装jemalloc,参考下面的方法即可:

$ tar zxf jemalloc-5.2.1.tar.gz$ mv jemalloc-jemalloc-886e40b/$ ./autogen.sh$ ./configure --prefix=/usr && make && make install

分别下载几个编译过程中需要的依赖包:

  • boost, https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz

  • patchelf, https://github.com/NixOS/patchelf/archive/refs/tags/0.14.tar.gz, 下载后重命名为 patchelf-0.14.tar.gz

  • rpcsvc-proto, https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz

下载GreatSQL源码包:https://product.greatdb.com/GreatSQL-8.0.25-17/greatsql-8.0.25-17.tar.gz

将所有的源码包都放在 /opt 目录下。

编译安装patchelf:

$ cd /opt && tar zxvf patchelf-0.14.tar.gz && cd patchelf-0.14 && ./bootstrap.sh && ./configure && make && make install

编译安装rpcsvc-proto:

    $ cd /opt && tar zxvf rpcsvc-proto-1.4.tar.gz && cd rpcsvc-proto-1.4/ && ./configure && make && make install

编译安装rpcsvc-proto:

[root@ky10 ~]# cd /opt && tar zxvf rpcsvc-proto-1.4.tar.gz && cd rpcsvc-proto-1.4/ && ./configure && make && make install

确认glibc版本:

$ ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 Free Software Foundation, Inc.This is free software; see the source for copying conditions.  There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Written by Roland McGrath and Ulrich Drepper.

在本次编译过程中,openEuler 2203的glibc版本是2.34。

3. 编译GreatSQL

接下来编译GreatSQL二进制包

$ cat /opt/greatsql-build-tarball.sh#!/bin/bashMAJOR_VERSION=8MINOR_VERSION=0PATCH_VERSION=25RELEASE=17REVISION="4733775f703"GLIBC=`ldd --version | grep ldd | tail -n 1 | awk '{print $NF}'`ARCH=aarch64OS=openEulerPKG_NAME=GreatSQL-${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}-${RELEASE}-${OS}-glibc${GLIBC}-${ARCH}BASE_DIR=/usr/local/${PKG_NAME}SRC_DIR=/optBOOST_SOURCE_DIR=boost_1_73_0GREATSQL_SOURCE_DIR=greatsql-8.0.25-17JOBS=`nproc`# 如果你的OS环境下已安装jemalloc,建议也启用jemalloc编译选项# 如果没有安装jemalloc,则将本行参数注释掉CMAKE_EXE_LINKER_FLAGS=" -ljemalloc "cd ${SRC_DIR}/${GREATSQL_SOURCE_DIR} && \rm -fr bld && \mkdir bld && \cd bld && \cmake .. -DBOOST_INCLUDE_DIR=${SRC_DIR}/${BOOST_SOURCE_DIR} \-DLOCAL_BOOST_DIR=${SRC_DIR}/${BOOST_SOURCE_DIR} \-DCMAKE_INSTALL_PREFIX=${BASE_DIR} -DWITH_ZLIB=bundled \-DWITH_NUMA=ON -DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" \-DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release \-DWITH_TOKUDB=OFF -DWITH_ROCKSDB=OFF \-DCOMPILATION_COMMENT="GreatSQL (GPL), Release ${RELEASE}, Revision ${REVISION}" \-DMAJOR_VERSION=${MAJOR_VERSION} -DMINOR_VERSION=${MINOR_VERSION} -DPATCH_VERSION=${PATCH_VERSION} \-DWITH_UNIT_TESTS=OFF -DWITH_NDBCLUSTER=OFF -DWITH_SSL=system -DWITH_SYSTEMD=ON \-DWITH_LIBEVENT=system \&& make -j${JOBS} && make -j${JOBS} install

不出意外的话,就可以编译生成二进制文件了。

4. 初始化并启动GreatSQL数据库

GreatSQL初始化,my.cnf可以参考这份模板:https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/docs/my.cnf-example-greatsql-8.0.25-17

  $ groupadd mysql && useradd -g mysql mysql -s /sbin/nologin -d /dev/null$ echo '/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/' > /etc/ld.so.conf.d/greatsql.conf$ ldconfig -p | grep -i perconalibperconaserverclient.so.21 (libc6,AArch64) => /usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/libperconaserverclient.so.21libperconaserverclient.so (libc6,AArch64) => /usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/libperconaserverclient.so# 确保没有找不到的动态库$ ldd /usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/bin/mysqld | grep -i not$ ./bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure$ ./bin/mysqld --defaults-file=/etc/my.cnf &$ lsof -p `pidof mysqld` | grep -i jemallocmysqld  85204 mysql  mem       REG                8,3     471696   3329101 /usr/lib64/libjemalloc.so.2

5. 运行sysbench测试

准备跑一轮sysbench测试

    #先设置PATH$ export PATH=$PATH:/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/bin$ mysqladmin create sbtest$ cd /usr/local/share/sysbench/$ sysbench /usr/local/share/sysbench/oltp_read_write.lua --mysql-host=localhost --mysql-user=root --mysql-password="" --mysql-socket=/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/data/mysql.sock --mysql-db=sbtest --db-driver=mysql --tables=10 --table_size=10000 prepare$ for i in $(seq 1 3);do sysbench /usr/local/share/sysbench/oltp_read_write.lua --mysql-host=localhost --mysql-user=root --mysql-password="" --mysql-socket=/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/data/mysql.sock --mysql-db=sbtest --db-driver=mysql --tables=10 --table_size=10000 --report-interval=1 --threads=8 --rand-type=uniform --db-ps-mode=disable  --time=900 run > greatsql-802517-$i.log; sleep 300; done

附录:编译sysbench

    #先做个动态库软链接$ cd /usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/$ ln -s libperconaserverclient.so libmysqlclient.so$ cd /tmp/sysbench/$ ./autogen.sh$ ./configure --with-mysql-includes=/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/include/ --with-mysql-libs=/usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/ && make && make install

社区生态 | openEuler、龙蜥Anolis、统信UOS三大主流操作系统下编译GreatSQL二进制包相关推荐

  1. 2700分+!统信UOS+龙芯3A4000最新Unixbench跑分出炉

    近日,第三方测试机构对搭载统信UOS和龙芯3A4000的电脑进行Unixbench测试,测试基于龙芯3A4000处理器(4核心,主频1.8GHz).编译器GCC 7.3.1和统信桌面操作系统UOS(内 ...

  2. 关于统信UOS操作系统版本介绍

    当下信创产业发展的如火如荼,今天聊聊统信操作系统UOS 相比较于其它国内品牌操作系统,统信UOS的版本.分支比较多,下面为大家详细说说各UOS版本. 2022年11月14日,更新新增 教育版 目前统信 ...

  3. 信创蓝海 合作共赢:统信UOS代理商推介会(郑州站)成功举行

    7月11日上午,统信UOS代理商推荐会--郑州站成功举办,河南IT企业代表.产业链生态伙伴等200人参与了本次推介会. 统信软件作为以"打造中国操作系统创新生态"为使命的中国基础软 ...

  4. 简单定制统信UOS镜像的方法

    关于简单定制统信UOS镜像的方法 一:原因和目的 原因:由于目前统信的UOS系统装好之后第三方软件集成度较低,用户拿到手之后不能做到开箱即用,需要安装各类软件,用户体验不够友好. 目的:将需要预安装的 ...

  5. 移动云正式发布基于龙蜥 Anolis OS 的 BC-Linux V8.2 通用版操作系统

    简介: 2020年12月CentOS项目组宣布CentOS 8将于2021年12月31日结束支持,这意味着从2022年开始,使用CentOS 8的用户,将无法得到来自官方的新硬件支持.bug修复和安全 ...

  6. 华为RH2288 V3安装 linux 龙蜥anolis系统安装

    一.用U盘制作CentOS系统启动盘 龙蜥anolis系统安装 1.1制作启动盘 Anolis OS(龙蜥系统)系统怎么安装?u盘安装Anolis OS系统安装教程 _ 电脑系统城 二.华为RH228 ...

  7. 统信UOS牵手深信服 共建云生态新格局

    9月29日,由深信服主办的"云演进 共生长--2020年信服云生态峰会"在武汉举行,来自政府.医疗.教育.公检法税等近千名行业客户莅临峰会现场.统信软件作为深信服深度合作伙伴受邀参 ...

  8. 国产化操作系统龙蜥Anolis OS8.6QU1兼容模式最小化部署

    本文测试在兼容模式下(兼容红帽RHCK(RHEL Compatible Kernel)内核)最小化部署国产化操作系统龙蜥Anolis OS8.6QU1实例. 获取镜像 到龙晰官网点此,访问最新信息,也 ...

  9. 国产统信UOS系统运行小程序的探索

    统信UOS操作系统的发展情况 UOS 是统信软件发行的国产操作系统,由深度操作系统为基础,经过定制而来的产品.UOS 之家的内容显示,UOS 是由包括中国电子集团.深度科技公司等发起的项目,全称为 U ...

最新文章

  1. android adb 命令源码解析
  2. 每日程序C语言42-带头结点的尾插法创建链表
  3. cmd 切换目录_Linux Shell从入门到删除根目录跑路指南
  4. Abstract Factory(抽象工厂)--对象创建模式
  5. node缓冲区_Node.js缓冲区介绍
  6. JS和OC间的通信(使用JavaScriptCore)
  7. websocket-shap 函数Broadcast的使用方法
  8. 极域九法——小白看得懂的退出极域电子教室教程
  9. 计算机的flash player在哪里,flash player电脑设置管理器在哪?怎么打开
  10. 了解工作分解结构(WBS)
  11. 分享8年开发经验,浅谈个人发展经历,明确自己发展方向
  12. matlab中如何去掉多行注释_matlab注释多行的方法
  13. YOLO V5 实现课堂行为检测
  14. 韩顺平循序渐进学java坦克大战爆炸图
  15. java+桌球小游戏图片_Java桌球小游戏
  16. PNG alpha transparency: AlphaImageLoader filter flaws
  17. 基于Java技术的Web环境下分布式数据库互操作性的实现
  18. MFC制作Windows画图程序(二)
  19. Mysql组复制(MGR)——技术细节
  20. Mega软件操作教程

热门文章

  1. 与一汽密谈 南汽罗孚点将起航
  2. 喜欢一个讨厌的人_为什么我们喜欢讨厌漫画无人
  3. JavaScript笔试知识点整理
  4. 第10章第1节:iSlide的安装并使用iSlide统一演示文稿中的字体 [PowerPoint精美幻灯片实战教程]
  5. Unity中游戏存档方式
  6. 如何将Mac磁盘映像转换为其他格式?
  7. JVM学习笔记之四 四种引用和垃圾回收的两次标记
  8. SWF格式的视频如何快速无损地转换成MP4格式
  9. 【经验分享】打通“任督”二脉——企业数字化转型中如何构建DevOps能力体系?
  10. Oracle alter table