openEuler龙蜥Anolis统信UOS系统下编译GreatSQL二进制包
Posted GreatSQL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openEuler龙蜥Anolis统信UOS系统下编译GreatSQL二进制包相关的知识,希望对你有一定的参考价值。
- GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
- GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
- 作者: Yejinrong/叶金荣
- 文章来源:GreatSQL社区投稿
- 背景介绍
- 编译环境
- 编译前准备工作
- 编译GreatSQL
- 初始化并启动GreatSQL数据库
- 运行sysbench测试
- 附录:编译sysbench
1. 背景介绍
为了能更好地支持更多操作系统及相关生态,我们决定发布openEuler、龙蜥Anolis、统信UOS三个操作系统下的GreatSQL二进制包。相应的二进制包可以访问gitee.com上的 GreatSQL项目 https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.25-17
下载。
本文简要记录在这三个操作系统下编译GreatSQL二进制包的过程。
2. 编译环境
本次编译都是采用鲲鹏916这个型号的CPU(泰山2280服务器系列):
$ lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 64
On-line CPU(s) list: 0-63
Thread(s) per core: 1
Core(s) per socket: 32
Socket(s): 2
NUMA node(s): 4
Model: 2
BogoMIPS: 100.00
L1d cache: 32K
L1i cache: 48K
L2 cache: 1024K
L3 cache: 16384K
NUMA node0 CPU(s): 0-15
NUMA node1 CPU(s): 16-31
NUMA node2 CPU(s): 32-47
NUMA node3 CPU(s): 48-63
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
上述 lscpu
是在物理机上执行的,实际编译环境则是在这个物理机上运行的虚机中,分配了8个CPU、16G内存。
查看操作系统发行版本
openEuler
$ cat /etc/os-release
NAME="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-release
NAME="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-release
PRETTY_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-release
UnionTech 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=OS
baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler
[everything]
name=everything
baseurl=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-22.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler
...
龙蜥Anolis
$ cat AnolisOS-AppStream.repo
[AppStream]
name=AnolisOS-$releasever - AppStream
baseurl=http://mirrors.openanolis.cn/anolis/$releasever/AppStream/$basearch/os
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ANOLIS
gpgcheck=1
统信UOS
$ cat UniontechOS.repo
[UniontechOS-$releasever-AppStream]
name = UniontechOS $releasever AppStream
baseurl = https://enterprise-c-packages.chinauos.com/server-enterprise-c/kongzi/1050/AppStream/$basearch
enabled = 1
username=$auth_u
password=$auth_p
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-uos-release
gpgcheck = 0
skip_if_unavailable = 1
[UniontechOS-$releasever-BaseOS]
name = UniontechOS $releasever BaseOS
baseurl = https://enterprise-c-packages.chinauos.com/server-enterprise-c/kongzi/1050/BaseOS/$basearch
enabled = 1
username=$auth_u
password=$auth_p
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-uos-release
gpgcheck = 0
skip_if_unavailable = 1
...
3. 编译前准备工作
参考文档 麒麟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 --version
ldd (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
在本次编译过程中,openEuler 2203的glibc版本是2.34。
4. 编译GreatSQL
接下来编译GreatSQL二进制包
$ cat /opt/greatsql-build-tarball.sh
#!/bin/bash
MAJOR_VERSION=8
MINOR_VERSION=0
PATCH_VERSION=25
RELEASE=17
REVISION="4733775f703"
GLIBC=`ldd --version | grep ldd | tail -n 1 | awk \'print $NF\'`
ARCH=aarch64
OS=openEuler
PKG_NAME=GreatSQL-$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION-$RELEASE-$OS-glibc$GLIBC-$ARCHBASE_DIR=/usr/local/$PKG_NAME
SRC_DIR=/opt
BOOST_SOURCE_DIR=boost_1_73_0
GREATSQL_SOURCE_DIR=greatsql-8.0.25-17
JOBS=`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
不出意外的话,就可以编译生成二进制文件了。
5. 初始化并启动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 percona
libperconaserverclient.so.21 (libc6,AArch64) => /usr/local/GreatSQL-8.0.25-17-openEuler-glibc2.34-aarch64/lib/libperconaserverclient.so.21
libperconaserverclient.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 jemalloc
mysqld 85204 mysql mem REG 8,3 471696 3329101 /usr/lib64/libjemalloc.so.2
6. 运行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
全文完。
Enjoy GreatSQL
深度 统信uos 操作系统20.4
深度操作系统20.4带来更好的系统安装、管理体验。诸多实用功能,满足更多场景下的使用需求。
系统进化
———————————
System Evolution
更智能的系统监视器
自动提醒硬件资源占用,为电脑健康运行保驾护航
本次我们在系统监视器中,增加了设置CPU和内存使用率阈值功能,设置后当使用率达到阈值时,系统就会主动发送通知提醒,这时候你就可以对电脑采取相关强硬措施,例如关闭一些非必要后台进程等,让硬件资源占用回归到正常水平,保持设备持续健康运行。
后续我们也会对系统监视器持续打磨,使其成为一个更好的监测查看和管理操作的系统工具,为你的电脑全方位保驾护航。
更强大的文管
第三方应用聚合管理,快速浏览,一目了然
很多第三方应用也有文件管理功能,可能分散在你桌面的各个角落,这次我们把这一类应用,放在了文件管理器的计算机类目下,可以通过鼠标双击或右键在菜单打开,让你的文件管理体验更聚焦、更方便。
简化系统安装过程
带来更便捷的系统安装体验
手动安装系统时,挂载分区一直是比较繁琐的操作,这次我们针对系统安装器进一步优化,支持自动挂载swap分区。同时在双系统手动安装时已有EFI分区,可以自动识别,无需再另外手动创建,简化系统安装过程提升整体体验。
强大功能
———————————
Powerful Features
懂你所想的深度浏览器
功能、性能全面升级,使用更贴心
深度浏览器带来了大版本更新,对于性能、功能全面优化,只为满足更多场景下的使用需求。
| 藏宝箱
当你浏览网页看到特别感兴趣的内容,想要收藏保存,新增的藏宝箱功能就能很好的满足这个需求,除了支持常规的收藏网页内容外,还支持文字和图片,让你不错过任何精彩信息。
同时对于收藏的内容进行分类展示,支持搜索查找,对于重要的内容可以进行置顶+按照创建时间来组合进行排序,更方便查找想要的内容。
| 标签分组
上网找资料,经常要打开很多标签页,打开的标签页过多,所有内容会堆叠在顶部栏,最终会被压缩到只显示一个图标,让人难以分辨标签页对应的内容,导致很难找到想要的标签页。
本次我们增加了群组标签页功能,创建分组后可以将同类型的网页标签归类到分组下,同时还支持对标签页搜索,可以更快速的找到想要的标签内容。
| 网址二维码分享
浏览到一个感兴趣的内容,可将网页生成二维码分享,被分享者只需扫描二维码图片即可打开网页链接内容。
本次浏览器内核版本从chromium83升级到chromium93,大幅提升软件使用性能,全面提升网页浏览体验。
个性化全局搜索
全新浅层化的交互方式
全局搜索功能上线至今,收到了用户肯定的反馈,本次我们对全局搜索功能再次升级,带来更浅层化的交互体验。
现在使用全局搜索功能出现搜索列表后,可按下ctrl键同时点击任一搜索结果,即可打开文件所在的路径。
另外还加入了任务栏是否显示全局搜索图标开关,可以根据自己的需求,来决定是否需要开启或关闭。
更便捷的截图录屏
快捷操作,一步直达
截图录屏的长截图功能,可以轻松实现整篇内容截取,同时还支持OCR功能,一键就能将图片的文字内容提取出来,进行二次创作,简直是文字党的福音。
本次我们针对这两个功能,增加了实用快捷键,Ctrl+Alt+L即可调出长截图功能,Ctrl+Alt+L调出OCR功能,减少了需要在功能菜单多次点击的时间,更快速的达到想要的目的。
关于深度操作系统20.4的更多精彩内容,请点击传送门:传送门
以上是关于openEuler龙蜥Anolis统信UOS系统下编译GreatSQL二进制包的主要内容,如果未能解决你的问题,请参考以下文章
统信UOS系统开发笔记:国产统信UOS系统搭建Qt开发环境安装Qt5.12
龙蜥社区开发者自述:我是如何趣味玩转Anolis OS的?|征文活动