移植指南 - huawei cloud · 2020. 9. 27. · 5 mongodb 4.0.12 移植指南(centos...

148
鲲鹏数据库解决方案 移植指南 文档版本 02 发布日期 2020-09-30 华为技术有限公司

Upload: others

Post on 12-Oct-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

鲲鹏数据库解决方案

移植指南

文档版本 02

发布日期 2020-09-30

华为技术有限公司

Page 2: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 i

Page 3: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

目 录

1 MySQL 5.7.27 移植指南(CentOS 7.6)................................................................................. 11.1 介绍.............................................................................................................................................................................................. 11.2 环境要求......................................................................................................................................................................................21.3 编译安装流程............................................................................................................................................................................. 31.4 配置编译环境............................................................................................................................................................................. 31.4.1 配置本地 yum 源................................................................................................................................................................... 31.4.2 升级 CMake............................................................................................................................................................................ 51.4.3 升级 GCC................................................................................................................................................................................. 71.5 编译和安装................................................................................................................................................................................. 81.6 故障排除......................................................................................................................................................................................91.6.1 CMake 升级版本不生效的问题......................................................................................................................................... 91.6.2 CMake 编译安装失败........................................................................................................................................................ 101.6.3 error:'prctl' was not declared in this scope............................................................................................................... 11

2 MySQL 8.0.x 移植指南(CentOS 7.6)................................................................................. 132.1 介绍............................................................................................................................................................................................ 132.2 环境要求................................................................................................................................................................................... 142.3 编译安装流程...........................................................................................................................................................................152.4 配置编译环境...........................................................................................................................................................................152.4.1 配置本地 yum 源.................................................................................................................................................................152.4.2 升级 CMake.......................................................................................................................................................................... 172.4.3 升级 GCC............................................................................................................................................................................... 192.5 编译和安装............................................................................................................................................................................... 202.6 故障排除................................................................................................................................................................................... 222.6.1 CMake 升级版本不生效的问题....................................................................................................................................... 222.6.2 CMake 编译安装失败........................................................................................................................................................ 22

3 MySQL 8.0.x 移植指南(openEuler 20.03)......................................................................243.1 介绍............................................................................................................................................................................................ 243.2 环境要求................................................................................................................................................................................... 253.3 编译安装流程...........................................................................................................................................................................263.4 配置编译环境...........................................................................................................................................................................263.4.1 安装依赖包........................................................................................................................................................................... 263.4.2 升级 CMake.......................................................................................................................................................................... 28

鲲鹏数据库解决方案移植指南 目 录

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 ii

Page 4: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

3.4.3 升级 GCC............................................................................................................................................................................... 293.5 配置运行环境...........................................................................................................................................................................313.5.1 关闭防火墙........................................................................................................................................................................... 313.5.2 关闭 SELIinux....................................................................................................................................................................... 313.5.3 创建用户组和用户.............................................................................................................................................................. 323.5.4 搭建数据盘........................................................................................................................................................................... 323.5.5 创建数据目录....................................................................................................................................................................... 353.6 编译安装................................................................................................................................................................................... 353.7 运行............................................................................................................................................................................................ 373.8 卸载............................................................................................................................................................................................ 42

4 MariaDB 10.3.8 移植指南(CentOS 7.6)..........................................................................434.1 介绍............................................................................................................................................................................................ 434.2 环境要求................................................................................................................................................................................... 444.3 配置编译环境...........................................................................................................................................................................454.4 编译和安装............................................................................................................................................................................... 47

5 MongoDB 4.0.12 移植指南(CentOS 7.6)........................................................................505.1 介绍............................................................................................................................................................................................ 505.2 环境要求................................................................................................................................................................................... 505.3 编译安装流程...........................................................................................................................................................................525.4 配置编译环境...........................................................................................................................................................................525.4.1 配置本地 yum 源.................................................................................................................................................................525.4.2 升级 CMake.......................................................................................................................................................................... 545.4.3 升级 GCC............................................................................................................................................................................... 565.4.4 安装 cython.......................................................................................................................................................................... 575.4.5 安装 pyyaml......................................................................................................................................................................... 595.4.6 安装 typing........................................................................................................................................................................... 605.4.7 安装 cheetah3..................................................................................................................................................................... 615.5 编译和安装 MongoDB.......................................................................................................................................................... 635.6 编译和安装 MongoDB tools............................................................................................................................................... 645.7 故障排除................................................................................................................................................................................... 675.7.1 CMake 升级版本不生效的问题....................................................................................................................................... 675.7.2 No space left on device................................................................................................................................................... 685.7.3 processor does not support `crc32cb w2,w2,w3'.................................................................................................... 685.7.4 No module named pkg_resources............................................................................................................................... 69

6 Percona 8.0.15 移植指南(CentOS 7.6)........................................................................... 706.1 介绍............................................................................................................................................................................................ 706.2 环境要求................................................................................................................................................................................... 716.3 编译安装流程...........................................................................................................................................................................726.4 配置编译环境...........................................................................................................................................................................726.4.1 配置本地 yum 源.................................................................................................................................................................726.4.2 升级 CMake.......................................................................................................................................................................... 74

鲲鹏数据库解决方案移植指南 目 录

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 iii

Page 5: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

6.4.3 升级 GCC............................................................................................................................................................................... 766.5 编译和安装............................................................................................................................................................................... 776.6 故障排除................................................................................................................................................................................... 806.6.1 CMake 升级版本不生效的问题....................................................................................................................................... 80

7 PostgreSQL 11.3 移植指南(CentOS 7.6)........................................................................ 827.1 介绍............................................................................................................................................................................................ 827.2 环境要求................................................................................................................................................................................... 847.3 编译安装流程...........................................................................................................................................................................857.4 配置编译环境...........................................................................................................................................................................867.4.1 配置本地 yum 源.................................................................................................................................................................867.4.2 升级 CMake.......................................................................................................................................................................... 877.4.3 升级 GCC............................................................................................................................................................................... 897.5 编译和安装............................................................................................................................................................................... 917.6 故障排除................................................................................................................................................................................... 937.6.1 CMake 升级版本不生效的问题....................................................................................................................................... 93

8 Greenplum 6.0.0 移植指南(CentOS 7.6)..........................................................................958.1 介绍............................................................................................................................................................................................ 958.2 环境要求................................................................................................................................................................................... 968.3 编译安装流程...........................................................................................................................................................................988.4 配置编译环境...........................................................................................................................................................................988.4.1 配置本地 yum 源.................................................................................................................................................................988.4.2 安装 python 依赖包......................................................................................................................................................... 1008.4.3 升级 CMake....................................................................................................................................................................... 1158.4.4 安装 zstd-dev.................................................................................................................................................................... 1178.4.5 安装 Xerces........................................................................................................................................................................ 1188.4.6 安装 re2c............................................................................................................................................................................. 1208.4.7 安装 ninja........................................................................................................................................................................... 1238.4.8 安装 gporca........................................................................................................................................................................1248.5 编译和安装............................................................................................................................................................................ 1278.6 故障处理................................................................................................................................................................................. 1298.6.1 ORCA 不符合 Greenplum 版本要求导致 Greenplum 编译失败..........................................................................129

9 鲲鹏数据库解决方案 移植指导大全......................................................................................1319.1 概述......................................................................................................................................................................................... 1319.2 常见原子操作(C 语言)................................................................................................................................................... 1319.2.1 C11 内存模型..................................................................................................................................................................... 1319.2.2 内存屏障使用推荐............................................................................................................................................................ 1329.2.3 __atomic 原子操作........................................................................................................................................................... 1329.2.4 spin 操作............................................................................................................................................................................. 1339.3 PostgreSQL........................................................................................................................................................................... 1339.3.1 原子操作............................................................................................................................................................................. 1339.3.1.1 内存屏障.......................................................................................................................................................................... 133

鲲鹏数据库解决方案移植指南 目 录

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 iv

Page 6: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

9.3.1.2 spin 函数..........................................................................................................................................................................1339.3.1.3 TAS & Clear.................................................................................................................................................................... 1339.3.1.4 CAS................................................................................................................................................................................... 1349.3.1.5 Fetch_add....................................................................................................................................................................... 1359.3.2 CRC 检验算法.................................................................................................................................................................... 1359.4 MySQL.................................................................................................................................................................................... 1369.4.1 Spin 函数............................................................................................................................................................................ 1369.4.2 CRC 校验算法.................................................................................................................................................................... 1369.4.3 CACHELINE 对齐优化..................................................................................................................................................... 1369.4.4 MySQL 因 ARM 弱内存序读写死锁问题说明........................................................................................................... 138

A 修订记录................................................................................................................................. 142

鲲鹏数据库解决方案移植指南 目 录

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 v

Page 7: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1 MySQL 5.7.27 移植指南(CentOS 7.6)

1.1 介绍

1.2 环境要求

1.3 编译安装流程

1.4 配置编译环境

1.5 编译和安装

1.6 故障排除

1.1 介绍

简要介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,是业界 流行的RDBMS(Relational Database Management System,关系数据库管理系统)之一,尤其在WEB应用方面。

关系型数据库是将数据保存在不同的表中,而非将所有数据放在一个大仓库内,这样就加快了速度并提高了灵活性。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

MySQL所使用的SQL语言是用于访问数据库的 常用标准化语言。

MySQL软件采用了双授权模式,分为社区版和商业版。

关于MySQL的更多信息请访问MySQL官网。

开发语言:C/C++

一句话描述:关系型数据库。

建议的版本

建议使用版本为“MySQL 5.7.27”。

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 1

Page 8: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1.2 环境要求

硬件要求

硬件要求如表1-1所示。

表 1-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表1-2所示。

表 1-2 操作系统要求

项目 版本

CentOS 7.6 for ARM

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

MySQL编译对编译环境有要求,配置编译环境需要用到以下软件包:

● OS镜像

需要从OS镜像中获取编译所需依赖包。

ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devellibmpc libmpc-devel zlib-devel net-tools CMake bison openssl openssl-devel

● CMake、GCC源码包

需要下载CMake,GCC源码重新编译安装,将CMake,GCC版本升级到高版本。

CMake 3.5.2源码下载地址请参考:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 2

Page 9: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

GCC 7.3.0源码下载地址请参考:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

1.3 编译安装流程MySQL源码编译安装流程如图1-1所示。

图 1-1 MySQL 源码编译安装流程

1.4 配置编译环境

1.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下。

mount /dev/sr0 /mnt/

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 3

Page 10: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像中的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

----结束

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 4

Page 11: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

安装 OS 依赖包

步骤1 安装依赖包。 yum -y install ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel zlib-devel net-tools cmake openssl openssl-devel

----结束

1.4.2 升级 CMake说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 5

Page 12: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

----结束

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 6

Page 13: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1.4.3 升级 GCC说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"

则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 7

Page 14: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

1.5 编译和安装步骤1 下载MySQL源码。

1. 下载MySQL源码包(includes Boost Headers)。cd /homewget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz --no-check-certificate

也可以通过浏览器下载MySQL源码包后上传到服务器“/home”目录下。

下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz

2. 解压,得到mysql-5.7.27目录。tar -zxvf mysql-boost-5.7.27.tar.gz

步骤2 进入“/home/mysql-5.7.27”源码文件夹,并建立一个编译目录。cd /home/mysql-5.7.27mkdir build

步骤3 进入编译目录,配置MySQL。cd buildcmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/home/mysql-5.7.27/boost/boost_1_59_0

路径要根据实际情况而定,关键参数的解释见表1-3。

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 8

Page 15: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

表 1-3 关键参数说明

参数 说明

DBUILD_CONFIG 设置为mysql_release的含义是指CMake编译参数采用Mysql官方发布release版本时的编译参数。

DCMAKE_INSTALL_PREFIX

用于指定软件的安装路径,本文安装路径为:/usr/local/mysql。文档中的安装路径只是参考,根据客户实际情况进行配置。

DMYSQL_DATADIR 创建数据库时,数据文件存放的路径。本次安装路径为:/data/mysql/data。

DWITH_BOOST 解压MySQL源码包后,解压文件中boost_1_59_0文件夹所在路径。例如,本文解压在“/home”目录下,则路径为:/home/mysql-5.7.27/boost/boost_1_59_0。

步骤4 编译MySQL。 make -j 96

步骤5 安装MySQL。 make -j 96 install

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

步骤6 查看安装目录。ls /usr/local/mysql/

步骤7 查看数据库版本。/usr/local/mysql/bin/mysql --version

----结束

1.6 故障排除

1.6.1 CMake 升级版本不生效的问题

现象描述

执行1.4.2 升级CMake后版本不生效。

可能原因

可能是原系统自带CMake未卸载造成的。

处理步骤

步骤1 通过yum命令移除原先的CMake。yum remove cmake -y

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 9

Page 16: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 建立目标版本CMake的软连接。ln -s /usr/local/bin/cmake /usr/bin

步骤3 查看版本。cmake --version

----结束

1.6.2 CMake 编译安装失败

现象描述

执行以下命令后,出现如图1-2的错误信息:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql-5.7.27/boost/boost_1_59_0

图 1-2 CMake 报错信息

处理步骤

步骤1 进入/home/mysql-5.7.27目录并且删除CMakeCache.txt文件。cd /home/mysql-5.7.27rm cmakeCache.txt

步骤2 重新执行如下命令:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql-5.7.27/boost/boost_1_59_0

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 10

Page 17: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

1.6.3 error:'prctl' was not declared in this scope

现象描述

MySQL 5.7.27 执行make报错如下:

处理步骤

步骤1 执行命令将prctl.h文件复制到/home/mysql-5.7.27/include中。cp /usr/include/sys/prctl.h /home/mysql-5.7.27/include

步骤2 编辑mysqld.cc文件,增加下图标注的内容。vi /home/mysql-5.7.27/sql/mysqld.cc

步骤3 重新执行命令安装。make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 11

Page 18: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

鲲鹏数据库解决方案移植指南 1 MySQL 5.7.27 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 12

Page 19: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

2 MySQL 8.0.x 移植指南(CentOS 7.6)

2.1 介绍

2.2 环境要求

2.3 编译安装流程

2.4 配置编译环境

2.5 编译和安装

2.6 故障排除

2.1 介绍

简要介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,是业界 流行的RDBMS(Relational Database Management System,关系数据库管理系统)之一,尤其在WEB应用方面。

关系型数据库是将数据保存在不同的表中,而非将所有数据放在一个大仓库内,这样就加快了速度并提高了灵活性。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

MySQL所使用的SQL语言是用于访问数据库的 常用标准化语言。

MySQL软件采用了双授权模式,分为社区版和商业版。

关于MySQL的更多信息请访问MySQL官网。

开发语言:C/C++

一句话描述:关系型数据库。

建议的版本

文档适用MySQL 8.0.17及以上版本。

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 13

Page 20: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

MySQL 8.0.16版本需自行通过官网补丁升级。

2.2 环境要求

硬件要求

硬件要求如表2-1所示。

表 2-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表2-2所示。

表 2-2 操作系统要求

项目 版本

CentOS 7.6 for ARM及以上,本文以7.6版本为例

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

MySQL编译对编译环境有要求,配置编译环境需要用到以下软件包:

● OS镜像

需要从OS镜像中获取编译所需依赖包。

bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

● CMake、GCC源码包

需要下载CMake,GCC源码重新编译安装,将CMake,GCC版本升级到高版本。

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 14

Page 21: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

CMake 3.5.2源码下载地址请参考:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gzGCC 7.3.0源码下载地址请参考:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

2.3 编译安装流程MySQL源码编译安装流程如图2-1所示。

图 2-1 MySQL 源码编译安装流程

2.4 配置编译环境

2.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下:

mount /dev/sr0 /mnt/

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 15

Page 22: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像时的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

----结束

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 16

Page 23: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

安装 OS 依赖包

步骤1 安装依赖包。yum -y install bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel wget tar GCC GCC-c++ git rpcgen CMake

----结束

2.4.2 升级 CMake

说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 17

Page 24: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

----结束

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 18

Page 25: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

2.4.3 升级 GCC说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"

则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 19

Page 26: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

2.5 编译和安装

说明

如果编译安装失败,需要执行如下命令清理环境,然后参照该章节的步骤重新解压并编译安装。

rm -rf /home/mysql-8.0.17

步骤1 下载源码包。

1. 下载MySQL源码包(includes Boost Headers)。

下载地址:https://downloads.mysql.com/archives/community/

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 20

Page 27: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

2. 将mysql-boost-8.0.17.tar.gz上传至服务器“/home”目录下,并解压。cd /hometar -zxvf mysql-boost-8.0.17.tar.gz

步骤2 进入“/home/mysql-8.0.17”源码文件夹,并建立一个编译目录。cd /home/mysql-8.0.17mkdir build

步骤3 进入编译目录,配置MySQL。cd buildcmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/home/mysql-8.0.17/boost/boost_1_69_0

路径要根据实际情况而定,关键参数的解释见表2-3。

表 2-3 关键参数说明

参数 说明

DBUILD_CONFIG 设置为mysql_release的含义是指CMake编译参数采用Mysql官方发布release版本时的编译参数。

DCMAKE_INSTALL_PREFIX

用于指定软件的安装路径,本文安装路径为:/usr/local/mysql。文档中的安装路径只是参考,根据客户实际情况进行配置。

DMYSQL_DATADIR 创建数据库时,数据文件存放的路径。本次安装路径为:/data/mysql/data。

DWITH_BOOST 解压MySQL源码包后,解压文件中boost_1_69_0文件夹所在路径。例如,本文解压在“/home”目录下,则路径为:/home/mysql-8.0.17/boost/boost_1_69_0。

步骤4 编译MySQL。make -j 96

步骤5 安装MySQL。make -j 96 install

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

步骤6 查看安装目录。ls /usr/local/mysql/

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 21

Page 28: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤7 查看数据库版本。/usr/local/mysql/bin/mysql --version

----结束

2.6 故障排除

2.6.1 CMake 升级版本不生效的问题

现象描述

执行2.4.2 升级CMake后版本不生效。

可能原因

可能是原系统自带CMake未卸载造成的。

处理步骤

步骤1 通过yum命令移除原先的CMake。yum remove cmake -y

步骤2 建立目标版本CMake的软连接。ln -s /usr/local/bin/cmake /usr/bin

步骤3 查看版本。cmake --version

----结束

2.6.2 CMake 编译安装失败

现象描述

执行以下命令后,出现如图2-2报错信息:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DCMAKE_C_COMPILER=/usr/bin/GCC -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql-8.0.17/boost/boost_1_69_0 -DFORCE_INSOURCE_BUILD=1

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 22

Page 29: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

图 2-2 CMake 编译报错信息

处理步骤

步骤1 进入/home/mysql-8.0.17目录并且删除CMakeCache.txt文件。cd /home/mysql-8.0.17rm cmakeCache.txt

步骤2 重新执行如下命令:cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DCMAKE_C_COMPILER=/usr/bin/GCC -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/home/mysql-8.0.17/boost/boost_1_69_0 -DFORCE_INSOURCE_BUILD=1

----结束

鲲鹏数据库解决方案移植指南 2 MySQL 8.0.x 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 23

Page 30: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

3 MySQL 8.0.x 移植指南(openEuler20.03)

3.1 介绍

3.2 环境要求

3.3 编译安装流程

3.4 配置编译环境

3.5 配置运行环境

3.6 编译安装

3.7 运行

3.8 卸载

3.1 介绍

简要介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是业界 流行的RDBMS(Relational Database ManagementSystem,关系数据库管理系统)之一,尤其在WEB应用方面。

关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就加快了速度并提高了灵活性。

MySQL所使用的SQL语言是用于访问数据库的 常用标准化语言。MySQL软件采用了双授权模式,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。

关于MySQL的更多信息请访问MySQL官网。

开发语言:C/C++

一句话描述:关系型数据库。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 24

Page 31: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

建议的版本

文档适用MySQL 8.0.17及以上版本。

说明

MySQL 8.0.16版本需自行通过官网补丁升级。

3.2 环境要求硬件要求如表3-1所示。

表 3-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求如表3-2所示。

表 3-2 操作系统要求

项目 版本 备注

openEuler 20.03 版本查看命令:cat /etc/openEuler-release

Kernel 4.19.90 版本查看命令:uname -r

说明

如果是全新安装操作系统,选择“Server”安装方式并勾选5个套件Network Servers、Performance Tools、Basic Web Server、Development Tools和System Tools,否则很多软件包需要手动安装。

软件版本要求如表3-3所示。

表 3-3 软件版本要求

软件 版本 备注

CMake 3.12.1(系统自带)

版本查看命令:cmake --version

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 25

Page 32: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

软件 版本 备注

GCC 7.3.0(系统自带)

版本查看命令:gcc -v

MySQL 8.0.x 版本查看命令:/usr/local/mysql/bin/mysql --version

3.3 编译安装流程MySQL源码编译安装流程如图3-1所示。

图 3-1 MySQL 源码编译安装流程

3.4 配置编译环境

3.4.1 安装依赖包

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/openEuler-20.03-LTS-everything-aarch64-dvd.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下(如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令):

mount /dev/sr0 /mnt/

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 26

Page 33: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

配置本地 yum 源

步骤1 对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

3. 保存并退出local.repo文件。

步骤5 使本地源生效。yum clean allyum makecache

----结束

安装依赖包

步骤1 安装依赖包。yum -y install bison ncurses ncurses-devel libaio-devel openssl openssl-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel wget tar gcc gcc-c++ git rpcgen CMake

说明

如果前面挂载OS镜像时不是使用的openEuler-20.03-LTS-everything-aarch64-dvd.iso这个镜像,通过yum安装有的rpm包会找不到,可以到镜像站下载rpm包后执行rpm -ivh *.rpm安装。

镜像站rpm包的下载地址:

https://mirrors.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/aarch64/Packages/

----结束

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 27

Page 34: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

3.4.2 升级 CMake

说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 28

Page 35: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make install

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

----结束

3.4.3 升级 GCC说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 29

Page 36: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"

则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 30

Page 37: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

3.5 配置运行环境

3.5.1 关闭防火墙

说明

测试环境下通常会关闭防火墙以避免部分网络因素影响,视实际需求做配置。

步骤1 停止防火墙。systemctl stop firewalld.service

步骤2 关闭防火墙。systemctl disable firewalld.service

说明

执行disable命令关闭防火墙的同时,也取消了开机自启动。

步骤3 查看防火墙状态。systemctl status firewalld.service

----结束

3.5.2 关闭 SELIinux步骤1 设置SELinux成为permissive模式,临时关闭selinux。

setenforce 0

步骤2 查看selinux状态,确认为permissive模式。getenforce

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 31

Page 38: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

临时打开selinux的方法:

设置SELinux成为enforcing模式,临时打开selinux。(本文不需要执行)

setenforce 1

永久关闭selinux的方法:

1. 执行vim /etc/sysconfig/selinux命令,打开SELinux文件,把"SELINUX=enforcing" 改为"SELINUX=disabled"。vim /etc/sysconfig/selinux

2. 保存文件,并重启服务器。

3. 确认SELinux是否关闭,如果SELinux status参数显示为disabled即为关闭状态。/usr/sbin/sestatus -v

----结束

3.5.3 创建用户组和用户

说明

服务器环境下,为了系统安全,通常会为进程分配单独的用户,以实现权限隔离。以下创建的组和用户是操作系统层面的,不是数据库层面的。步骤4中会用到。

步骤1 创建mysql用户组。groupadd mysql

步骤2 创建mysql用户。useradd -g mysql mysql

步骤3 设置mysql用户密码。passwd mysql

重复输入密码(根据实际需求设置密码)。

----结束

3.5.4 搭建数据盘

进行性能测试时,数据目录使用单独硬盘,需要对硬盘进行格式化并挂载,参考方法一:使用fdisk进行磁盘管理或者方法二:使用LVM进行磁盘管理。

非性能测试时,直接执行3.5.5 创建数据目录。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 32

Page 39: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

方法一:使用 fdisk 进行磁盘管理

步骤1 创建分区(以/dev/nvme0n1为例,根据实际情况创建)。fdisk /dev/nvme0n1

步骤2 输入字母p打印分区表,按回车可以打印出当前的分区。

步骤3 输入字母n添加一个新的分区,按回车确认。

步骤4 输入字母p选择创建一个主分区,按回车确认。

步骤5 输入数字1(作为第一块主分区)创建新的分区,按回车确认。

步骤6 设置选择分区start值,采用默认配置,按回车确认。

步骤7 设置选择分区end值,采用默认配置,按回车确认。

步骤8 输入字母p查看 新分区表,按回车可以打印出当前的分区。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 33

Page 40: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤9 输入w将 新分区表保存至磁盘中,按回车保存。

步骤10 针对新创建的分区创建文件系统(以xfs为例,根据实际需求创建文件系统)。ls /dev/nvme*mkfs.xfs -f /dev/nvme0n1p1

步骤11 挂载分区到“/data”以供操作系统使用。mkdir /datamount /dev/nvme0n1p1 /data

步骤12 编辑“/etc/fstab”使重启后自动挂载数据盘。vi /etc/fstab

如下图中,添加 后一行内容。其中,/dev/sdb1为示例,具体名称以实际情况为准。

----结束

方法二:使用 LVM 进行磁盘管理

此步骤需要安装镜像中的lvm2相关包,步骤如下:

步骤1 安装lvm2。yum -y install lvm2

步骤2 创建物理卷(sdb为硬盘名称,具体名字以实际为准)。pvcreate /dev/sdb

步骤3 创建物理卷组(其中datavg为创建的卷组名称,具体名字以实际规划为准)。vgcreate datavg /dev/sdb

步骤4 创建逻辑卷(其中600G为规划的逻辑卷大小,具体大小以实际情况为准;datalv为创建的逻辑卷的名字,具体名称以实际规划为准)。lvcreate -L 600G -n datalv datavg

步骤5 创建文件系统。mkfs.xfs /dev/datavg/datalv

步骤6 创建数据目录并挂载。mkdir /datamount /dev/datavg/datalv /data

步骤7 执行命令vi /etc/fstab,编辑“/etc/fstab”使重启后自动挂载数据盘。如下图中,添加 后一行内容。

其中,/dev/datavg/datalv为示例,具体名称以实际情况为准。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 34

Page 41: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

3.5.5 创建数据目录

步骤1 创建的数据目录/data和进程所需的相关目录。mkdir /datamkdir -p /data/mysqlcd /data/mysqlmkdir data tmp run log

步骤2 修改数据目录/data的用户组和用户权限为mysql:mysql。chown -R mysql:mysql /datall /

----结束

3.6 编译安装

说明

如果编译安装失败,需要执行如下命令清理环境,然后参照该章节的步骤重新解压并编译安装。

rm -rf /home/mysql-8.0.17

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 35

Page 42: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤1 下载MySQL源码包。

1. 下载MySQL源码包(includes Boost Headers)。

下载地址:https://downloads.mysql.com/archives/community/

2. 将mysql-boost-8.0.17.tar.gz上传至服务器“/home”目录下,并解压。cd /hometar -zxvf mysql-boost-8.0.17.tar.gz

步骤2 进入“/home/mysql-8.0.17”源码文件夹,并建立一个编译目录。cd /home/mysql-8.0.17mkdir build

步骤3 进入编译目录,配置MySQL。cd buildcmake .. -DBUILD_CONFIG=mysql_release -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DWITH_BOOST=/home/mysql-8.0.17/boost/boost_1_69_0

实际路径要根据实际情况而定,关键参数的解释见表3-4。

表 3-4 关键参数说明

参数 说明

DBUILD_CONFIG 设置为mysql_release的含义是指CMake编译参数采用Mysql官方发布release版本时的编译参数。

DCMAKE_INSTALL_PREFIX

用于指定软件的安装路径,本文安装路径为:/usr/local/mysql。

DMYSQL_DATADIR 创建数据库时,数据文件存放的路径。本次安装路径为:/data/mysql/data。

DWITH_BOOST 解压MySQL源码包后,解压文件中boost_1_69_0文件夹所在路径。例如,本文解压在“/home”目录下,则路径为:/home/mysql-8.0.17/boost/boost_1_69_0。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 36

Page 43: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤4 编译MySQL。make -j 96

步骤5 安装MySQL。make -j 96 install

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

步骤6 查看安装目录。ls /usr/local/mysql/

步骤7 修改安装目录/usr/local/mysql/的用户组和用户权限为mysql:mysql。chown -R mysql:mysql /usr/local/mysql/ll /usr/local/mysql/

步骤8 查看数据库版本。/usr/local/mysql/bin/mysql --version

----结束

3.7 运行步骤1 修改配置文件。

1. 清除过去文件并重新创建my.cnf文件。rm -f /etc/my.cnfecho -e "[mysqld_safe]\nlog-error=/data/mysql/log/mysql.log\npid-file=/data/mysql/run/mysqld.pid\n[mysqldump]\nquick\n[mysql]\nno-auto-rehash\n[client]\ndefault-character-set=utf8\n[mysqld]\nbasedir=/usr/local/mysql\nsocket=/data/mysql/run/mysql.sock\ntmpdir=/

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 37

Page 44: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

data/mysql/tmp\ndatadir=/data/mysql/data\ndefault_authentication_plugin=mysql_native_password\nport=3306\nuser=mysql" > /etc/my.cnf

注意

其中文件路径(包括软件安装路径basedir、数据路径datadir等)根据实际情况修改。

user=mysql是指操作系统层的用户。此处用户指3.5.3 创建用户组和用户创建的。

2. 确保my.cnf配置文件修改正确。cat /etc/my.cnf

3. 修改配置文件/etc/my.cnf的用户组和用户权限为mysql:mysql。chown mysql:mysql /etc/my.cnfll /etc/my.cnf

步骤2 MySQL加入service服务并赋权。chmod 777 /usr/local/mysql/support-files/mysql.servercp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqlchkconfig mysql on

修改/etc/init.d/mysql的用户组和用户权限为mysql:mysql

chown -R mysql:mysql /etc/init.d/mysqlll /etc/init.d/mysql

步骤3 配置环境变量。

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 38

Page 45: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1. 修改环境变量文件/etc/profile的用户组和用户权限为mysql:mysql。chown mysql:mysql /etc/profilell /etc/profile

2. 切换到mysql用户。su - mysqlwhoami

3. 安装完成后,将MySQL二进制文件路径配置到环境变量中。export PATH=$PATH:/usr/local/mysql/bin >> /etc/profile

注意

其中PATH中的“/usr/local/mysql/bin”路径,为MySQL软件安装目录下的bin文件的绝对路径,请根据实际情况修改。

4. 使环境变量配置生效。source /etc/profile

5. 查看环境变量是否生效。env

步骤4 初始化数据库。mysqld --defaults-file=/etc/my.cnf --initialize

或者

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 39

Page 46: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

1. 该步骤回显中倒数第2行有初始密码,请注意保存,登陆数据库时会用到。

2. 如果初始化失败,提示“--initialize specified but the data directory has files in it.”则执行下面命令删除数据后重新初始化

ls /data/mysql/datarm -rf /data/mysql/data/*

初始化完成后,查看数据目录下数据文件/data/mysql/data的用户组和用户权限为mysql:mysql(因为前面/etc/my.cnf文件中配置的操作系统用户是user=mysql)。

ll /data/mysql/data

步骤5 启动数据库(有3种方式)。

注意

如果以root用户(su - root)第一次启动数据库服务(service mysql start),启动时会提示缺少mysql.log文件而导致失败,详细报错如下面截图所示。

执行以下操作解决报错:

1. 切换到mysql用户(su - mysql)启动数据库服务后,会在/data/mysql/log目录下生成mysql.log文件。

2. 停止数据库服务(service mysql stop),再次以root用户启动数据库服务则不会报错。

service mysql start

或者

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 40

Page 47: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

mysqld --defaults-file=/etc/my.cnf &

或者

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

查看数据库进程。

ps -ef | grep mysql

查看数据库监测端口。

netstat -anptnetstat -anpt | grep mysqlnetstat -anpt | grep 3306

步骤6 登录数据库。

说明

提示输入密码时,请输入步骤4中产生的初始密码。

mysql -uroot -p -S /data/mysql/run/mysql.sock

或者

/usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock

步骤7 配置数据库帐号密码。

1. 登录数据库以后,修改通过root用户登录数据库的密码。alter user 'root'@'localhost' identified by "123456";

2. 创建全域root用户(允许root从其他服务器访问)。create user 'root'@'%' identified by '123456';

3. 进行授权。grant all privileges on *.* to 'root'@'%';flush privileges;

步骤8 退出数据库。

执行\q或者exit退出数据库。

exit

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 41

Page 48: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤9 用修改后的密码重新登录数据库。mysql -uroot -p -S /data/mysql/run/mysql.sock

或者

/usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock

退出数据库

exit

步骤10 关闭数据库。service mysql stop

或者

mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock

或者

/usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock

查看数据库进程。

ps -ef | grep mysql

----结束

3.8 卸载步骤1 关闭数据库进程。

ps -ef | grep mysqlkill -9 进程ID

步骤2 源码编译安装只是生成对应的文件,不涉及卸载,直接删除对应的安装目录和数据目录即可。ls /usr/local/mysqlls /data/mysql/rm -rf /usr/local/mysqlrm -rf /data/mysql

----结束

鲲鹏数据库解决方案移植指南 3 MySQL 8.0.x 移植指南(openEuler 20.03)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 42

Page 49: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

4 MariaDB 10.3.8 移植指南(CentOS 7.6)

4.1 介绍4.2 环境要求4.3 配置编译环境4.4 编译和安装

4.1 介绍

简要介绍

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品,MariaDB还提供了许多更好的新特性。

MariaDB的架构如图4-1所示。

图 4-1 MariaDB 逻辑架构

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 43

Page 50: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

当MariaDB接受到Sql语句时,其详细的执行过程如下:

1. 当客户端连接到mariadb的时候,会认证客户端的主机名、用户、密码,认证功能可以做成插件。

2. 如果登录成功,客户端发送sql命令到服务端。由解析器解析sql语句。

3. 服务端检查客户端是否有权限去获取它想要的资源。

4. 如果查询已经存储在query cache当中,那么结果立即返回。

5. 优化器将会找出 快的执行策略,或者是执行计划,也就是说优化器可以决定什么表将会被读,以及哪些索引会被访问,哪些临时表会被使用,一个好的策略能够减少大量的磁盘访问和排序操作等。

6. 存储引擎读写数据和索引文件,cache用来加速这些操作,其他的诸如事物和外键特性,都是在存储引擎层处理的。

存储引擎在物理层管控数据,它负责数据文件、数据、索引、cache等的管理,这使得管理和读取数据变得更高效,每一张表,都有一个.frm文件,这些文件包含着表的定义。

每一个存储引擎管理、存储数据的方式都是不同的,所支持的特性和性能也不尽相同。例如:

● MyISAM,适合读多写少的环境,且不支持事务,支持全文索引等。

● InnoDB,支持事务,支持行锁和外键等。

● MEMORY,将数据存储在内存当中。

● CSV,将数据存储为CSV格式。

开发语言:C

一句话描述:MySQL开源分支

建议的版本

建议使用的版本为“MariaDB 10.3.8”。

说明

本文档适用于MariaDB 10.3.8,其他版本的MariaDB编译步骤可参考本文档。

4.2 环境要求

硬件要求

硬件要求如表4-1所示。

表 4-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 44

Page 51: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

项目 说明

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表4-2所示。

表 4-2 操作系统要求

项目 版本

CentOS 7.6 for ARM以上,本文以7.6版本为例

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

MariaDB编译需要MariaDB源码包,请提前下载。

MariaDB源码下载地址请参考:https://downloads.mariadb.org/mariadb/10.3.8/

4.3 配置编译环境配置编译环境目的是安装编译所需的依赖库,需要安装的MariaDB编译依赖库如下:

本地yum源安装:readline-devel zlib-devel openssl* cmake git gcc* perl* bison都可以直接从ISO镜像中获取。

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下:

mount /dev/sr0 /mnt/

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 45

Page 52: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像时的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 46

Page 53: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

安装 OS 依赖包

步骤1 安装依赖包。yum -y install readline-devel zlib-devel openssl* cmake git gcc* perl* bison

----结束

4.4 编译和安装步骤1 下载MariaDB源码包,并上传至服务器。本例以MariaDB 10.3.8为例。

下载地址:https://downloads.mariadb.org/mariadb/10.3.8/

步骤2 进入上传源码的路径(本文以/root目录为上传路径),解压MariaDB源码包。cd /roottar zxvf mariadb-10.3.8.tar.gz

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 47

Page 54: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd mariadb-10.3.8

步骤4 执行编译。cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/data/mariadb/data -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/data/mariadb/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

部分的路径参数说明如“表1 编译安装时关键路径说明”所示,请根据实际情况修改。

表 4-3 编译安装时关键路径说明

路径 说明

-DCMAKE_INSTALL_PREFIX

软件安装路径。

-DMYSQL_DATADIR 数据文件路径。

-DSYSCONFDIR 配置文件路径。

-DMYSQL_UNIX_ADDR sock文件路径。

步骤5 执行安装。make -j 32 && make install

说明

-j 32参数充分利用多核CPU优势,加快编译速度。编译命令参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 48

Page 55: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

鲲鹏数据库解决方案移植指南 4 MariaDB 10.3.8 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 49

Page 56: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

5 MongoDB 4.0.12 移植指南(CentOS 7.6)

5.1 介绍

5.2 环境要求

5.3 编译安装流程

5.4 配置编译环境

5.5 编译和安装MongoDB

5.6 编译和安装MongoDB tools

5.7 故障排除

5.1 介绍

简要介绍

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能 丰富, 像关系数据库的。

开发语言:C++

一句话描述:分布式文件存储数据库。

说明

此文档仅适用于MongoDB 4.0.12。

5.2 环境要求

硬件要求

硬件要求如表5-1所示。

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 50

Page 57: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

表 5-1 硬件要求

项目 说明

服务器 TaiShan 200服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘(数据盘可选用性能较好的SSD盘,NVMe盘等),至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表5-2所示。

表 5-2 操作系统要求

项目 版本 备注

CentOS 7.6 for ARM cat /etc/redhat-release

说明

1.如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

2.MongoDB 4.0.12在安装的时候,/root分区大小设置不小于50G,执行df -h /root或者lsblk查看/root分区大小。

软件版本要求

软件版本要求如表5-3所示。

表 5-3 软件版本要求

软件 版本

依赖包 通过本地yum源安装

CMake https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

GCC https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

cython https://github.com/cython/cython.git

pyyaml https://github.com/yaml/pyyaml.git

typing https://github.com/python/typing.git

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 51

Page 58: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

软件 版本

cheetah3 https://github.com/CheetahTemplate3/cheetah3.git

MongoDB https://github.com/mongodb/mongo/archive/r4.0.12.tar.gz

5.3 编译安装流程MongoDB源码编译安装流程如图5-1所示。

图 5-1 MongoDB 源码编译安装流程

5.4 配置编译环境

5.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下:

mount /dev/sr0 /mnt/

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 52

Page 59: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像时的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 53

Page 60: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

安装 OS 依赖包

步骤1 安装依赖包。yum -y install libyaml libyaml-devel python-setuptools libcurl-devel python-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libpcap-dev*

说明

1、libpcap-dev*是编译和安装MongoDB tools过程需要的依赖包。

2、查看libpcap-dev版本

rpm -qa | grep libpcap-dev

----结束

5.4.2 升级 CMake说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 54

Page 61: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 55

Page 62: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

5.4.3 升级 GCC说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 56

Page 63: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"

则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

5.4.4 安装 cython

方法一:在线下载安装

步骤1 进入home目录。cd /home/

步骤2 克隆Git代码仓库中的cython。git config --global http.sslVerify falsegit clone https://github.com/cython/cython.git

步骤3 安装cython。cd /home/cythonpython setup.py install

----结束

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 57

Page 64: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

方法二:离线下载安装

步骤1 单击链接https://github.com/cython/cython.git打开网页,然后如下图所示单击“Download ZIP”下载安装包,并上传服务器的“/home”目录下。

步骤2 进入“/home”目录,并解压压缩包。cd /homeunzip cython-master.zip

步骤3 进入解压后的文件,并安装cython。cd /home/cython-masterpython setup.py install

----结束

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 58

Page 65: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

5.4.5 安装 pyyaml

方法一:在线下载安装

步骤1 进入home目录。cd /home/

步骤2 克隆Git代码仓库中的pyyaml。git clone -b 3.11 https://github.com/yaml/pyyaml.git

步骤3 安装pyyaml。cd /home/pyyamlpython setup.py install

----结束

方法二:离线下载安装

步骤1 单击链接https://github.com/yaml/pyyaml.git打开网页,然后如下图所示,单击“Download ZIP”,下载安装包,并上传服务器的“/home”目录下。

步骤2 进入“/home”目录,并解压压缩包。cd /homeunzip pyyaml-master.zip

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 59

Page 66: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后的文件,并安装pyyaml。cd pyyaml-masterpython setup.py install

----结束

5.4.6 安装 typing

方法一:在线下载安装

步骤1 进入home目录。cd /home/

步骤2 克隆Git代码仓库中的typing。git clone -b 3.6.1 https://github.com/python/typing.git

步骤3 安装typing。cd typingpython setup.py install

----结束

方法二:离线下载安装

步骤1 单击链接https://github.com/python/typing.git打开网页,然后如下图所示,单击“Download ZIP”, 下载安装包,并上传服务器的“/home”目录下。

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 60

Page 67: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 进入“/home”目录,并解压压缩包。cd /homeunzip typing-master.zip

步骤3 进入解压后的文件,并安装typing。cd typing-masterpython setup.py install

----结束

5.4.7 安装 cheetah3

方法一:在线下载安装

步骤1 进入home目录。cd /home/

步骤2 克隆Git代码仓库中的cheetah3。git clone -b 3.0.0 https://github.com/CheetahTemplate3/cheetah3.git

步骤3 安装cheetah3。cd cheetah3python setup.py install

----结束

方法二:离线下载安装

步骤1 单击链接https://github.com/CheetahTemplate3/cheetah3.git打开网页,然后如下图所示,单击“Download ZIP”,下载安装包,并上传服务器的“/home”目录下。

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 61

Page 68: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 进入“/home”目录,并解压压缩包。cd /homeunzip cheetah3-master.zip

步骤3 进入解压后的文件,并安装cheetah3。cd cheetah3-masterpython setup.py install

----结束

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 62

Page 69: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

5.5 编译和安装 MongoDB步骤1 下载MongoDB源码包。

cd /homewget https://github.com/mongodb/mongo/archive/r4.0.12.tar.gz --no-check-certificate

也可以通过浏览器下载源码之后上传到服务器“/home”目录下。

下载地址:https://github.com/mongodb/mongo/archive/r4.0.12.tar.gz

步骤2 解压。tar zxvf mongo-r4.0.12.tar.gz

说明

通过wget下载后,执行重命名命令。

mv r4.0.12.tar.gz mongo-r4.0.12.tar.gz

步骤3 进入“/home/mongo-r4.0.12”源码文件夹。cd /home/mongo-r4.0.12

步骤4 执行编译(编译时间大概10-15分钟)。python2 buildscripts/scons.py MONGO_VERSION=4.0.12 all CFLAGS="-march=armv8-a+crc -mtune=generic" -j 64 --disable-warnings-as-errors

说明

-j 64:充分利用CPU多核优势,加快编译速度。

参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

步骤5 执行安装。mkdir /usr/local/mongopython2 buildscripts/scons.py MONGO_VERSION=4.0.12 --prefix=/usr/local/mongo --disable-warnings-as-errors CFLAGS="-march=armv8-a+crc" install -j 64

安装完成后将在“/usr/local/mongo”下会自动生成bin目录,查看bin目录下内容。

ll /usr/local/mongo/bin

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 63

Page 70: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤6 删除调试信息。cd /usr/local/mongo/binstrip mongosstrip mongodstrip mongo

----结束

5.6 编译和安装 MongoDB tools步骤1 下载go编译器源码包。

cd /homewget https://golang.org/dl/go1.13.5.linux-arm64.tar.gz --no-check-certificate

也可以通过浏览器下载源码之后上传到服务器“/home”目录下。

下载地址:https://golang.org/dl/

步骤2 解压go源码包到/usr/local目录下。tar -C /usr/local -xzf go1.13.5.linux-arm64.tar.gzls /usr/local/go

步骤3 设置go编译器环境变量。export PATH=$PATH:/usr/local/go/bin

执行go env获取GOROOT的配置。

export GOROOT="/usr/local/go"

查看go编译器环境变量是否设置成功。

env | grep GOROOTenv | grep PATH

步骤4 查看go编译器版本。whereis go/usr/local/go/bin/go version

步骤5 下载MongoDB tools源码包。cd /rootwget https://github.com/mongodb/mongo-tools/archive/r4.0.6.tar.gz --no-check-certificate

也可以通过浏览器下载源码之后上传到服务器“/root”目录下。

下载地址:https://github.com/mongodb/mongo-tools/archive/r4.0.6.tar.gz

步骤6 解压MongoDB tools源码包。tar zxvf r4.0.6.tar.gzls mongo-tools-r4.0.6

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 64

Page 71: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤7 设置MongoDB tools环境变量。cd /root/mongo-tools-r4.0.6chmod +x set_goenv.shsource set_goenv.sh

步骤8 变更MongoDB tools的编译目录。

解压后的目录是mongo-tools-r4.0.6,需要进行如下操作更换目录结构,否则编译会报错。

在mongo-tools-r4.0.6的同级目录下(本文档是/root)执行如下操作:

cd /rootmkdir -p mongodb-tools-4.0.6/src/github.com/mongodbmv mongo-tools-r4.0.6 mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools

步骤9 下载解压gopacket,替换MongoDB tools的gopacket。

1、下载gopacket。

cd /rootwget https://github.com/google/gopacket/archive/master.zip --no-check-certificate

也可以通过浏览器下载源码之后上传到服务器“/root”目录下。

下载地址:https://github.com/google/gopacket/archive/master.zip

2、解压gopacket。

unzip master.zipll gopacket-master

3、替换MongoDB tools的gopacket。

ll /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacketrm -rf /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacketmv gopacket-master /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacketll /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket

步骤10 建立GCC软链接。

1、查看GCC路径以及版本。

whereis gcc;/user/bin/gcc --version

2、建立GCC软链接。

mkdir -p /opt/mongodbtoolchain/v2/binln -s /usr/bin/gcc /opt/mongodbtoolchain/v2/bin/aarch64-mongodb-linux-gccll /opt/mongodbtoolchain/v2/bin/aarch64-mongodb-linux-gcc

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 65

Page 72: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

1、创建软链接

ln -s 源文件 软链接

ln -s /usr/bin/gcc /opt/mongodbtoolchain/v2/bin/aarch64-mongodb-linux-gcc

2、查看软链接

ll 软链接

软链接 -> 源文件

ll /opt/mongodbtoolchain/v2/bin/aarch64-mongodb-linux-gcc

3、删除软链接

rm -rf 软链接

rm -rf /opt/mongodbtoolchain/v2/bin/aarch64-mongodb-linux-gcc

步骤11 编译安装MongoDB tools。cd /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools./build.sh

查看生成的二进制可执行文件

ls /root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/bin

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 66

Page 73: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤12 验证MongoDB tools命令是否正常(本文以mongorestore和mongoreplay为例进行说明)。/root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/bin/mongorestore --version/root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/bin/mongoreplay --version/root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/bin/mongorestore --help/root/mongodb-tools-4.0.6/src/github.com/mongodb/mongo-tools/bin/mongoreplay --help

----结束

5.7 故障排除

5.7.1 CMake 升级版本不生效的问题

现象描述

执行5.4.2 升级CMake后版本不生效。

可能原因

可能是原系统自带CMake未卸载造成的。

处理步骤

步骤1 通过yum命令移除原先的CMake。yum remove cmake -y

步骤2 建立目标版本CMake的软连接。ln -s /usr/local/bin/cmake /usr/bin

步骤3 查看版本。cmake --version

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 67

Page 74: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

5.7.2 No space left on device

现象描述

编译时,提示“src/third_party/mozjs-45/extract/js/src/jit/MCallOptimize.cpp:3611:1: fatal error: error writing to /tmp/ccGS0uQN.s: No space left on device”错误。

处理步骤

编译产生大量文件,把编译文件放在足够大的目录下面。例如:将文件放于home目录下,并删除原本root目录下的包。

5.7.3 processor does not support `crc32cb w2,w2,w3'

现象描述

编译时提示“/tmp/ccNLTPMq.s:35: Error: selected processor does not support`crc32cb w2,w2,w3'”错误。

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 68

Page 75: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

处理步骤

步骤1 执行编译时,添加CFLAGS="-march=armv8-a+crc -mtune=generic"。python2 buildscripts/scons.py MONGO_VERSION=4.0.12 all CFLAGS="-march=armv8-a+crc -mtune=generic" -j 64 --disable-warnings-as-errors

----结束

5.7.4 No module named pkg_resources

现象描述

处理步骤

步骤1 先下载安装setuptools。cd /homewget --no-check-certificate https://bootstrap.pypa.io/ez_setup.pysudo python ez_setup.py -insecure

步骤2 下载pip安装包并且添加软连接。cd /homewget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gztar -xf pip-9.0.1.tar.gzcd pip-9.0.1sudo python setup.py installln -s /usr/local/python27/bin/pip /usr/bin/pip

----结束

鲲鹏数据库解决方案移植指南 5 MongoDB 4.0.12 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 69

Page 76: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

6 Percona 8.0.15 移植指南(CentOS 7.6)

6.1 介绍

6.2 环境要求

6.3 编译安装流程

6.4 配置编译环境

6.5 编译和安装

6.6 故障排除

6.1 介绍

简要介绍

Percona Server由领先的MySQL咨询公司Percona发布。 Percona Server是一款独立的数据库产品,其可以完全与MySQL兼容,可以在不更改代码的情况了下将存储引擎更换成XtraDB 。

Percona团队的 终声明是“Percona Server是由Oracle发布的 接近官方MySQLEnterprise发行版的版本”,因此与其他更改了大量基本核心MySQL代码的分支有所区别。 Percona Server的一个缺点是他们自己管理代码,不接受外部开发人员的贡献,以这种方式确保他们对产品中所包含功能的控制。

Percona提供了高性能XtraDB引擎,还提供PXC高可用解决方案,并且附带了perconatoolkit等DBA管理工具箱。

关于Percona的更多信息请访问Percona官网。

开发语言:C/C++

一句话描述:关系型数据库

建议的版本

建议使用的版本为“Percona 8.0.15”。

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 70

Page 77: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

6.2 环境要求

硬件要求

硬件要求如表6-1所示。

表 6-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表6-2所示。

表 6-2 操作系统要求

项目 版本

CentOS 7.6 for ARM及以上,本文以7.6版本为例

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

Percona编译对编译环境有要求,需要准备OS镜像、CMake、GCC源码包配置编译环境,另外Percona编译需要Percona源码包,请提前下载。

CMake 3.5.2源码下载地址请参考:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

GCC 7.3.0源码下载地址请参考:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

Percona源码下载地址请参考:https://www.percona.com/downloads/Percona-Server-LATEST/

需要安装的Percona编译依赖库有两类:

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 71

Page 78: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1. 本地yum源安装

ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devellibmpc libmpc-devel libcurl-devel readline-devel zlib-devel openssl*cmake git gcc* perl* bison net-tools这些依赖包都可以直接从ISO镜像中获取。

2. 源码依赖包

将CMake,GCC版本升级到高版本,需要下载源码重新编译安装。

6.3 编译安装流程Percona源码编译安装流程如图6-1所示。

图 6-1 Percona 源码编译安装流程

6.4 配置编译环境

6.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下。

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 72

Page 79: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

mount /dev/sr0 /mnt/

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像中的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 73

Page 80: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

安装 OS 依赖包

步骤1 安装依赖包。yum -y install ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel libcurl-devel readline-devel zlib-devel openssl* CMake git GCC* perl* bison net-tools

----结束

6.4.2 升级 CMake

说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 74

Page 81: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

----结束

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 75

Page 82: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

6.4.3 升级 GCC说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"

则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 76

Page 83: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

6.5 编译和安装步骤1 下载Percona的源码包percona-server-8.0.15-6.tar.gz(本文以Percona 8.0.15版本为

例),并上传至服务器“/home”目录下。

下载地址:https://www.percona.com/downloads/Percona-Server-LATEST/

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 77

Page 84: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 下载boost库包,并上传至服务器“/home”目录下。

下载地址:https://nchc.dl.sourceforge.net/project/boost/boost/1.68.0/boost_1_68_0.tar.gz

步骤3 进入“/home”目录并解压boost库包以及Percona源码包。cd /hometar xvf boost_1_68_0.tar.gztar zxvf percona-server-8.0.15-6.tar.gz

步骤4 因为下载的源码存在死锁bug,编译前需要修改源码来进行修复。

1. 进入解压后的源码目录。cd /home/percona-server-8.0.15-6

2. 对sync0rw.cc文件进行修复。vi storage/innobase/sync/sync0rw.cc

替换“/storage/innobase/sync/sync0rw.cc”文件中512-514行为以下内容:bool recursive;os_thread_id_t writer_thread;if (!pass) {recursive = lock->recursive;os_rmb;writer_thread = lock->writer_thread;}

替换前后,如下图所示。

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 78

Page 85: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

图 6-2 替换前

图 6-3 替换后

注意

添加到文件中的代码格式,需要和图6-3中格式相同。

步骤5 进入解压后的Percona源码文件夹。cd /home/percona-server-8.0.15-6

步骤6 执行编译。cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_CONFIG=mysql_release -DFEATURE_SET=community -DWITH_BOOST=/home/boost_1_68_0 -DCMAKE_INSTALL_PREFIX=/usr/local/percona -DMYSQL_DATADIR=/data/percona -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/data/percona/run/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DFORCE_INSOURCE_BUILD=1

在编译安装的时候,路径需要根据实际情况而定,表6-3为对编译安装的关键路径的解释。

表 6-3 编译安装关键路径说明

参数 说明

DCMAKE_INSTALL_PREFIX

用于指定软件的安装路径。本次安装路径为:/usr/local/percona

DMYSQL_DATADIR

创建数据库时,数据文件存放的路径。本次安装路径为:/data/percona

DCMAKE_C_COMPILER

安装GCC的存放路径,如果在安装GCC没有指定路径的情况下,一般默认存放在“/usr/local/bin”目录下。

DWITH_BOOST 解压的Percona安装压缩包中boost_1_68_0文件夹所在路径。例如,本文解压在“/home”目录下,则路径为:/home/boost_1_68_0

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 79

Page 86: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤7 执行安装。make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

----结束

6.6 故障排除

6.6.1 CMake 升级版本不生效的问题

现象描述

执行6.4.2 升级CMake后版本不生效。

可能原因

可能是原系统自带CMake未卸载造成的。

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 80

Page 87: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

处理步骤

步骤1 通过yum命令移除原先的CMake。yum remove cmake -y

步骤2 建立目标版本CMake的软连接。ln -s /usr/local/bin/cmake /usr/bin

步骤3 查看版本。cmake --version

----结束

鲲鹏数据库解决方案移植指南 6 Percona 8.0.15 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 81

Page 88: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

7 PostgreSQL 11.3 移植指南(CentOS 7.6)

7.1 介绍7.2 环境要求7.3 编译安装流程7.4 配置编译环境7.5 编译和安装7.6 故障排除

7.1 介绍

简要介绍

PostgreSQL的架构如图7-1所示,主要进程说明如表7-1所示。

图 7-1 PostgreSQL 架构

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 82

Page 89: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

表 7-1 PostgreSQL 中的主要进程说明

进程类别

进程名称 说明

主进程

Postmaster Postmaster是整个数据库实例的总控进程,负责启动和关闭该数据库实例。

常驻进程

Postgres(常驻进程)

管理后端的常驻进程,也称为“postmaster”。其默认监测UNIXDomain Socket和TCP/IP(Windows等,一部分的平台只监测TCP/IP)的5432端口,等待来自前端的的连接处理。监测的端口号可以在PostgreSQL的设置文件postgresql.conf中修改。

子进程

Postgres(子进程)

子进程根据pg_hba.conf定义的安全策略来判断是否允许进行连接,根据策略,会拒绝某些特定的IP及网络,或者也可以只允许某些特定的用户或者对某些数据库进行连接。

Postgres会接受前端过来的查询,然后对数据库进行检索,后把结果返回,有时也会对数据库进行更新。更新的数据

同时还会记录在事务日志里面(PostgreSQL称为WAL日志)。这个主要是当停电、服务器宕机、重新启动的时候进行恢复处理的时候使用。另外,把日志归档保存起来,可在需要进行恢复的时候使用。在PostgreSQL 9.0以后,通过把WAL日志传送其他的PostgreSQL,可以实时的进行数据库复制,这就是所谓的“数据库复制”功能。

辅助进程

SysLogger(系统日志)

需要在Postgres.conf中logging_collection设置为on,此时主进程才会启动Syslogger辅助进程。

BgWriter(后台写)

把共享内存中的脏页写到磁盘上的进程。主要是为了提高插入、更新和删除数据的性能。

WalWriter(预写式日志)

在修改数据之前把修改操作记录到磁盘中,以便后面更新实时数据时就不需要数据持久化到文件中。

PgArch(归档)

WAL日志会被循环使用,PgArch在归档前会把WAL日志备份出来。通过PITR(Point in Time Recovery)技术,可以对数据库进行一次全量备份后,该技术将备份时间点之后的WAL日志通过归档进行备份,使用数据库的全量备份再加上后面产生的WAL日志,即可把数据库向前推到全量备份后的任意一个时间点。

AutoVacuum(系统自动清理)

在PostgreSQL数据库中,对表进行DELETE操作后,旧的数据并不会立即被删除,并且,在更新数据时,也并不会在旧的数据上做更新,而是新生成一行数据。旧的数据只是被标识为删除状态,只有在没有并发的其他事务读到这些就数据时,它们才会被清除。这个清除工作就由AutoVacuum进程完成。

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 83

Page 90: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

进程类别

进程名称 说明

PgStat(统计收集)

做数据的统计收集工作。主要用于查询优化时的代价估算,包括一个表和索引进行了多少次的插入、更新、删除操作,磁盘块读写的次数、行的读次数。pg_statistic中存储了PgStat收集的各类信息。

CheckPoint(检查点)

检查点是系统设置的事务序列点,设置检查点保证检查点前的日志信息刷到磁盘中。

开发语言:C/C++

一句话描述:对象关系型数据库管理系统

建议的版本

建议使用的版本为“PostgreSQL 11.3”。

7.2 环境要求

硬件要求

硬件要求如表7-2所示。

表 7-2 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表7-3所示。

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 84

Page 91: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

表 7-3 操作系统要求

项目 版本

CentOS 7.6 for ARM及以上,本文以7.6版本为例

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

PostgreSQL编译对编译环境有要求,配置编译环境需要用到以下软件包:

● OS镜像

需要从OS镜像中获取编译所需依赖包。

automake zlib zlib-devel bzip2 bzip2-devel bzip2-libs readline readline-devel gcc gcc-c++ bison ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

● CMake、GCC、PostgreSQL源码包

CMake 3.5.2源码下载地址请参考:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gzGCC 7.3.0源码下载地址请参考:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gzPostgreSQL源码下载地址请参考:https://www.postgresql.org/ftp/source/

7.3 编译安装流程PostgreSQL源码编译安装流程如图7-2所示。

图 7-2 PostgreSQL 源码编译安装流程

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 85

Page 92: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

7.4 配置编译环境

7.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下。

mount /dev/sr0 /mnt/

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 86

Page 93: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像中的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

----结束

安装 OS 依赖包

步骤1 安装依赖包。yum -y install automake zlib zlib-devel bzip2 bzip2-devel bzip2-libs readline readline-devel GCC GCC-c++ bison ncurses ncurses-devel libaio-devel gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel

----结束

7.4.2 升级 CMake说明

系统自带的CMake软件不能满足MySQL的编译要求,需要升级CMake版本至3.4.3或者以上,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2。

CMake 3.5.2下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器/home目录,并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 87

Page 94: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

make install

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 88

Page 95: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤5 确认CMake的版本是否为3.5.2。/usr/local/bin/cmake --version

----结束

7.4.3 升级 GCC

说明

系统自带的GCC软件很老,需要升级GCC版本至5.3或者以上,本文以升级到7.3版本为例。

步骤1 下载GCC 7.3.0。

GCC 7.3下载地址:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

步骤2 将GCC-7.3.0.tar.gz上传至“/home”目录下,并解压。cd /hometar -xvf gcc-7.3.0.tar.gz

步骤3 编译安装GCC。

进入GCC文件路径。cd /home/gcc-7.3.0

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 89

Page 96: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

1. 配置。./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-bootstrap

– --perfix=PATH:指定GCC软件安装目录。默认路径/usr– --mandir=PATH:指定GCC软件文档目录。默认路径/usr/share/man– --infodir=PATH:指定GCC软件日志信息目录。默认路径/usr/share/info– --enable-bootstrap:指定启用bootstrap方式安装。

说明

如果配置报错"configure: error: no acceptable C compiler found in $PATH"则执行yum -y reinstall gcc gcc-c++

2. 编译GCC源码。make -j 96

说明

-j96 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

3. 安装。make -j 96 install

步骤4 确认GCC的版本是否为7.3.0。gcc -v

----结束

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 90

Page 97: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

7.5 编译和安装步骤1 下载PostgreSQL 11.3版本源代码包。

下载地址:https://www.postgresql.org/ftp/source/(源代码包文件为postgresql-11.3.tar.gz)

步骤2 将源码包上传至服务器的“/home”目录内,并解压。

进入/home目录:

cd /home

解压源码包:

tar -xvf postgresql-11.3.tar.gz

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 91

Page 98: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd /home/postgresql-11.3

步骤4 执行编译。./configure -prefix=/usr/local/pgsql

步骤5 配置性能优化选项。

执行命令打开Makefile.global文件:

vi /home/postgresql-11.3/src/Makefile.global

在文件261行末尾增加-march=armv8-a+crc+lse(性能优化选项 enable lse),如下图所示:

步骤6 执行安装。make -j 64

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 92

Page 99: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make -j 64 install

说明

-j 64 参数充分利用多核CPU优势,加快编译速度,参数-j后数字为CPU核数,可用“cat /proc/cpuinfo | grep processor | wc -l”进行查看,此数值应小于等于CPU核数。

步骤7 查看安装目录。ls /usr/local/pgsql

步骤8 查看数据库版本。/usr/local/pgsql/bin/postgres --version

----结束

7.6 故障排除

7.6.1 CMake 升级版本不生效的问题

现象描述

执行7.4.2 升级CMake后版本不生效。

可能原因

可能是原系统自带CMake未卸载造成的。

处理步骤

步骤1 通过yum命令移除原先的CMake。

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 93

Page 100: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

yum remove cmake -y

步骤2 建立目标版本CMake的软连接。ln -s /usr/local/bin/cmake /usr/bin

步骤3 查看版本。cmake --version

----结束

鲲鹏数据库解决方案移植指南 7 PostgreSQL 11.3 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 94

Page 101: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

8 Greenplum 6.0.0 移植指南(CentOS 7.6)

8.1 介绍

8.2 环境要求

8.3 编译安装流程

8.4 配置编译环境

8.5 编译和安装

8.6 故障处理

8.1 介绍

简要介绍

Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。

本质上讲Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。与RAC不同,这种数据库集群采取的是MPP(MassivelyParallel Processing)架构。

关于Greenplum的更多信息请访问Greenplum官网。

一句话描述:分布式关系型数据库

建议的版本

建议使用版本为“Greenplum 6.0.0”。

说明

本文档适用于Greenplum 6.0.0,其他版本的Greenplum编译步骤可参考本文档。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 95

Page 102: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

8.2 环境要求

硬件要求

硬件要求如表8-1所示。

表 8-1 硬件要求

项目 说明

服务器 TaiShan 200 服务器(型号2280)

CPU 华为鲲鹏920处理器

硬盘 进行性能测试时,数据目录需使用单独硬盘,即一个系统盘,一个数据盘,至少两块硬盘。

非性能测试时,直接在系统盘上建数据目录即可。

具体硬盘数量根据实际需求配置。

操作系统要求

操作系统要求如表8-2所示。

表 8-2 操作系统要求

项目 版本

CentOS 7.6 for ARM及以上,本文以7.6版本为例

说明

如果是全新安装操作系统,可选择“Minimal Install”安装方式并勾选Development Tools套件,否则很多软件包需要手动安装。

软件包要求

Greenplum编译对编译环境有要求,需要准备OS镜像、python依赖包、CMake、zstd-dev、Xerces、re2c、ninja、gporca等源码包配置编译环境,如表8-3;另外Greenplum编译需要Greenplum源码包,请提前下载。

表 8-3 依赖包对应版本及下载地址表

源码依赖包 下载地址 版本

setuptools https://github.com/pypa/setuptools 29.0.1

psutil https://pypi.org/project/psutil/#files 5.7.0

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 96

Page 103: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

源码依赖包 下载地址 版本

pbr https://pypi.org/project/pbr/#files 5.4.4

lockfile https://pypi.org/project/lockfile/#files

0.12.2

pycparser https://pypi.org/project/pycparser/#files

2.20

cffi https://pypi.org/project/cffi/#files 1.14.0

bcrypt https://pypi.org/project/bcrypt/#files 3.1.7

six https://pypi.org/project/six/#files 1.14.0

PyNaCl https://pypi.org/project/PyNaCl/#files

1.3.0

cryptography https://pypi.org/project/cryptography/#files

2.8

ipaddress https://pypi.org/project/ipaddress/#files

1.0.23

enum34 https://pypi.org/project/enum34/#files

1.1.10

paramiko https://pypi.org/project/paramiko/#files

2.7.1

epydoc https://pypi.org/project/epydoc/#files

3.0.1

CMake https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

3.5.2

zstd-dev https://github.com/facebook/zstd 1.4.3

Xerces https://github.com/greenplum-db/gp-xerces

3.1.2

re2c https://github.com/skvadrik/re2c 2.0.3

ninja https://github.com/ninja-build/ninja 1.10.1

gporca https://github.com/greenplum-db/gporca/tree/v3.65.3

Greenplum与gporca有严格的版本依赖,Greenplum 6.0.0依赖gporca-3.65.XX版本,确认步骤参考安装gporca-3.65.3。

Greenplum https://github.com/greenplum-db/gpdb/tree/6.0.0

6.0.0

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 97

Page 104: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

需要安装的Greenplum编译依赖库有两类:

● 本地yum源

curl-devel bzip2-devel python-devel openssl-devel readline-devel perl-ExtUtils-Embed libxml2-devel openldap-devel pam pam-devel perl-devel apr-devel libevent-devel libyaml libyaml-devel libedit-devel libffi-devel bison flexflex-devel

这些依赖包都可以直接从ISO镜像中获取。

● 源码依赖包

需要下载python依赖包、CMake、zstd-dev、Xerces、re2c、ninja、gporca依赖包源码重新编译安装。

8.3 编译安装流程Greenplum源码编译安装流程如图8-1所示。

图 8-1 Greenplum 编译安装流程

8.4 配置编译环境

8.4.1 配置本地 yum 源

挂载 OS 镜像

挂载OS镜像文件有下面的两种操作,执行其中一种操作即可。

方法一:上传OS镜像至“/home”路径,挂载镜像至“/mnt/”目录下。

mount /home/CentOS-7-aarch64-Everything-1810.iso /mnt/

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 98

Page 105: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

说明

iso文件名请根据实际情况修改,该操作单次生效,重启后失效。

方法二:KVM挂载镜像,然后挂载镜像至“/mnt/”目录下:

mount /dev/sr0 /mnt/

说明

如果执行以下命令提示没有镜像,可以重新连接镜像,然后再执行以下命令。

配置本地 yum 源

说明

如果组网环境处于外网受限情况下,服务器yum命令无法通过外界获取依赖包时,可参考本节内容进行本地源配置。

步骤1 先对原系统yum源配置文件进行备份。mv /etc/yum.repos.d /etc/yum.repos.d.bak

步骤2 添加本地源文件,创建yum源新配置目录/etc/yum.repos.d。mkdir /etc/yum.repos.d

步骤3 进入目录。cd /etc/yum.repos.d

步骤4 创建local.repo文件。

1. 创建local.repo文件。vi local.repo

2. 编辑local.repo文件,在local.repo文件中添加如下内容:[local]name=local.repobaseurl=file:///mntenabled=1gpgcheck=0

文件编辑完成如下:

注意

其中baseurl中file路径为镜像挂载路径,与挂载OS镜像时的挂载目录"/mnt"对应。

3. 保存并退出local.repo文件。

步骤5 执行如下命令,生效本地源。yum clean allyum makecache

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 99

Page 106: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

安装 OS 依赖包

步骤1 安装依赖包。yum -y install curl-devel bzip2-devel python-devel openssl-devel readline-devel perl-ExtUtils-Embed libxml2-devel openldap-devel pam pam-devel perl-devel apr-devel libevent-devel libyaml libyaml-devel libedit-devel libffi-devel bison flex flex-devel

----结束

8.4.2 安装 python 依赖包

安装 setuptools

步骤1 用谷歌浏览器下载setuptools依赖包。

下载地址:https://github.com/pypa/setuptools

打开网址后找到版本v29.0.1并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 100

Page 107: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip setuptools-29.0.1.zip

步骤3 安装setuptools。cd /home/setuptools-29.0.1python bootstrap.pypython setup.py install

----结束

安装 psutil

步骤1 用谷歌浏览器下载psutil依赖包。

下载地址:https://pypi.org/project/psutil/#files

打开网址后找到版本5.7.0并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 101

Page 108: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf psutil-5.7.0.tar.gz

步骤3 安装psutil。cd /home/psutil-5.7.0python setup.py install

----结束

安装 pbr

步骤1 用谷歌浏览器下载pbr依赖包。

下载地址:https://pypi.org/project/pbr/#files

打开网址后找到版本5.4.4并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 102

Page 109: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf pbr-5.4.4.tar.gz

步骤3 安装pbr。cd /home/pbr-5.4.4python setup.py install

----结束

安装 lockfile

步骤1 用谷歌浏览器下载lockfile依赖包。

下载地址:https://pypi.org/project/lockfile/#files

打开网址后找到版本0.12.2并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 103

Page 110: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf lockfile-0.12.2.tar.gz

步骤3 安装lockfile。cd /home/lockfile-0.12.2python setup.py install

----结束

安装 pycparser

步骤1 用谷歌浏览器下载pycparser依赖包。

下载地址:https://pypi.org/project/pycparser/#files

打开网址后找到版本2.20并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 104

Page 111: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf pycparser-2.20.tar.gz

步骤3 安装pycparser。cd /home/pycparser-2.20python setup.py install

----结束

安装 cffi

步骤1 用谷歌浏览器下载cffi依赖包。

下载地址:https://pypi.org/project/cffi/#files

打开网址后找到版本1.14.0并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 105

Page 112: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf cffi-1.14.0.tar.gz

步骤3 安装cffi。cd /home/cffi-1.14.0python setup.py install

----结束

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 106

Page 113: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

安装 six

步骤1 用谷歌浏览器下载six依赖包。

下载地址:https://pypi.org/project/six/#files

打开网址后找到版本1.14.0并下载,如下图所示。

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf six-1.14.0.tar.gz

步骤3 安装six。cd /home/six-1.14.0python setup.py install

----结束

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 107

Page 114: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

安装 bcrypt

步骤1 用谷歌浏览器下载bcrypt依赖包。

下载地址:https://pypi.org/project/bcrypt/#files

打开网址后找到版本3.1.7并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 108

Page 115: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf bcrypt-3.1.7.tar.gz

步骤3 安装bcrypt。cd /home/bcrypt-3.1.7python setup.py install

----结束

安装 PyNaCl

步骤1 用谷歌浏览器下载PyNaCl依赖包。

下载地址:https://pypi.org/project/PyNaCl/#files

打开网址后找到版本1.3.0并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 109

Page 116: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf PyNaCl-1.3.0.tar.gz

步骤3 安装PyNaCl。cd /home/PyNaCl-1.3.0python setup.py install

----结束

安装 ipaddress

步骤1 用谷歌浏览器下载ipaddress依赖包。

下载地址:https://pypi.org/project/ipaddress/#files

打开网址后找到版本1.0.23并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 110

Page 117: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf ipaddress-1.0.23.tar.gz

步骤3 安装ipaddress。cd /home/ipaddress-1.0.23python setup.py install

----结束

安装 enum34

步骤1 用谷歌浏览器下载enum34依赖包。

下载地址:https://pypi.org/project/enum34/#files

打开网址后找到版本1.1.10并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 111

Page 118: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf enum34-1.1.10.tar.gz

步骤3 安装enum34。cd /home/enum34-1.1.10python setup.py install

----结束

安装 cryptography步骤1 用谷歌浏览器下载cryptography依赖包。

下载地址:https://pypi.org/project/cryptography/#files

打开网址后找到版本2.8并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 112

Page 119: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf cryptography-2.8.tar.gz

步骤3 安装cryptography。cd /home/cryptography-2.8python setup.py install

----结束

安装 paramiko

步骤1 用谷歌浏览器下载paramiko依赖包。

下载地址:https://pypi.org/project/paramiko/#files

打开网址后找到版本2.7.1并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 113

Page 120: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf paramiko-2.7.1.tar.gz

步骤3 安装paramiko。cd /home/paramiko-2.7.1python setup.py install

----结束

安装 epydoc

步骤1 用谷歌浏览器下载epydoc依赖包。

下载地址:https://pypi.org/project/epydoc/#files

打开网址后找到版本3.0.1并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 114

Page 121: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器/home目录中并解压。cd /hometar -zxvf epydoc-3.0.1.tar.gz

步骤3 安装epydoc。cd /home/epydoc-3.0.1python setup.py install

----结束

8.4.3 升级 CMake请升级CMake至3.1或以上版本,本文以升级到3.5.2版本为例。

步骤1 下载CMake 3.5.2软件包。

下载地址:https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /hometar -zxvf cmake-3.5.2.tar.gz

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 115

Page 122: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd cmake-3.5.2

步骤4 升级CMake。./bootstrap

make

make install

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 116

Page 123: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤5 查看CMake版本。/usr/local/bin/cmake --version

----结束

8.4.4 安装 zstd-dev步骤1 用谷歌浏览器下载zstd-dev软件包。

下载地址:https://github.com/facebook/zstd

打开网址后找到版本1.4.3并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 117

Page 124: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip zstd-1.4.3.zip

步骤3 进入解压后目录。cd /home/zstd-1.4.3/

步骤4 编译安装zstd-dev。make

make install

ln -s /usr/local/lib/libzstd.so.1.4.3 /usr/lib64/libzstd.so.1

----结束

8.4.5 安装 Xerces步骤1 用谷歌浏览器下载Xerces软件包。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 118

Page 125: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

下载地址:https://github.com/greenplum-db/gp-xerces

打开网址后找到版本v3.1.2-p1并下载,如下图所示。

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip gp-xerces-3.1.2-p1.zip

步骤3 进入解压后目录。cd /home/gp-xerces-3.1.2-p1/

步骤4 编译安装gp-xerces。./configure

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 119

Page 126: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

make

make install

----结束

8.4.6 安装 re2c步骤1 用谷歌浏览器下载re2c软件包。

下载地址:https://github.com/skvadrik/re2c

打开网址后找到版本2.0.3并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 120

Page 127: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip re2c-2.0.3.zip

步骤3 进入解压后目录。cd /home/re2c-2.0.3/

步骤4 编译安装re2c。./autogen.sh

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 121

Page 128: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

./configure

make

make install

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 122

Page 129: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

----结束

8.4.7 安装 ninja步骤1 用谷歌浏览器下载ninja软件包。

下载地址:https://github.com/ninja-build/ninja

打开网址后找到版本v1.10.1并下载,如下图所示。

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip ninja-1.10.1.zip

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 123

Page 130: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 进入解压后目录。cd /home/ninja-1.10.1

步骤4 编译安装ninja。./configure.py --bootstrap

cp ninja /usr/bin/

----结束

8.4.8 安装 gporca步骤1 用谷歌浏览器下载gporca软件包。

下载地址:https://github.com/greenplum-db/gporca/tree/v3.65.3

打开网址后找到版本v3.65.3并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 124

Page 131: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将软件包上传至服务器“/home”目录中并解压。cd /homeunzip gporca-3.65.3.zip

步骤3 进入解压后目录。cd gporca-3.65.3

步骤4 编译安装gporca。CMake -GNinja -H. -Bbuild

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 125

Page 132: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

vi libgpos/src/common/CStackDescriptor.cpp

第167行注释掉

ninja install -C build

步骤5 添加‘/usr/local/lib’到/etc/ld.so.conf文件。echo /usr/local/lib >> /etc/ld.so.confldconfig

说明

如果执行ldconfig报错“ldconfig: /lib64/libstdc++.so.6.0.24-gdb.py is not an ELF file - it hasthe wrong magic bytes at the start.”则删除该文件。

rm -rf /lib64/libstdc++.so.6.0.24-gdb.py

----结束

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 126

Page 133: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

8.5 编译和安装

下载源码

步骤1 用谷歌浏览器下载Greenplum源码包。

下载地址:https://github.com/greenplum-db/gpdb/tree/6.0.0

打开网址后找到版本6.0.0并下载,如下图所示。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 127

Page 134: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤2 将源码包上传至服务器“/home”目录中并解压。cd /homeunzip gpdb-6.0.0.zip

----结束

编译和安装

步骤1 进入“/home/gpdb-6.0.0”源码文件夹。cd /home/gpdb-6.0.0

步骤2 执行编译。./configure --with-perl --with-python --with-libxml --prefix=/usr/local/gpdb

表 8-4 编译安装关键参数说明

参数 说明

prefix 用于指定软件的安装路径。本次安装路径为:/usr/local/gpdb

with-python 构建Python模块(PL/Perl)。

with-xml 用于支持xml。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 128

Page 135: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

步骤3 执行安装。make

make install

----结束

8.6 故障处理

8.6.1 ORCA 不符合 Greenplum 版本要求导致 Greenplum 编译失败

现象描述

编译Greenplum时提示如下错误。

可能原因

Greenplum和gporca版本兼容性问题。

处理步骤

步骤1 确认Greenplum对gpora的版本要求。

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 129

Page 136: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

cd gpdb-6.0.0/dependscat conanfile_orca.txt

步骤2 参照8.4.8 安装gporca重新安装符合版本要求的gporca。

然后执行命令加载动态库:

echo /usr/local/lib >/etc/ld.so.confldconfig

步骤3 重新编译Greenplum。

----结束

鲲鹏数据库解决方案移植指南 8 Greenplum 6.0.0 移植指南(CentOS 7.6)

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 130

Page 137: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

9 鲲鹏数据库解决方案 移植指导大全

9.1 概述

9.2 常见原子操作(C语言)

9.3 PostgreSQL

9.4 MySQL

9.1 概述x86平台迁移鲲鹏计算平台,涉及了底层指令集的转换。如使用C/C++高级语言编写的代码,在鲲鹏计算平台使用GCC编译,高版本GCC对arm-v8指令集的支持可以保证正常编译。在数据库场景,出于并发编程的一致性和性能考虑,需要使用大量的原子类的函数操作。为了适配不同版本的GCC,数据库代码在x86平台往往对原子操作会进行汇编化。另外sse4.x指令集还提供了一些高级指令,在x86平台也比较常见。

针对x86平台特有的汇编指令和高级指令集,在适配鲲鹏计算平台时需要做对应的修改。本文以开源数据库(PostgreSQL和Mysql)为例,举例常见的多平台支持中的差异点,供需要做数据库类源码移植的开发者参考。

本文推荐使用GCC 7.3版本以上编译,支持C11内存模型和arm-v8的新指令。

9.2 常见原子操作(C 语言)GCC提供了C语言版本的原子操作,GCC可保证跨平台的编译问题。

9.2.1 C11 内存模型GCC 4.7前,__sync同步原语中默认的内存模型为full barrier模型,__sync原语前后的读写操作均不可做指令重排。为提高流水线执行效率,GCC 4.7合入和C11的内存模型,通过__atomic同步原语,由使用者控制需要的屏障级别。

__ATOMIC_RELAXED 对其它读写操作没有同步,只保证本操作是原子的。

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 131

Page 138: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

__ATOMIC_CONSUME load操作,当前线程依赖该原子变量的访存操作不能reorder到该指令之前,对其他线程store操作(release)可见。

__ATOMIC_ACQUIRE load操作,当前线程所有访存操作不能reorder到该指令之前,对其他线程store操作(release)可见。

__ATOMIC_RELEASE store操作,当前线程所有访存操作不能reorder到该指令之后,对其他线程load操作(consume)可见。

__ATOMIC_ACQ_REL load/store操作,memory_order_acquire +memory_order_release。

__ATOMIC_SEQ_CST memory_order_acq_rel + 顺序一致性(sequential consisten)。

9.2.2 内存屏障使用推荐

说明

对多线程访问临界区的逻辑不清晰时,建议仍使用__ATOMIC_SEQ_CST屏障,避免由屏障使用不当带来一致性问题。

数据库常见场景为锁操作,锁的获取和释放之间形成临界区,保障临界区的一致性。

● 锁Acquire使用__ATOMIC_ACQUIRE屏障。

● 锁Release使用__ATOMIC_RELEASE屏障。

9.2.3 __atomic 原子操作

操作类型 函数

原子读 type __atomic_load_n(type *ptr,int memmodel)

原子写 void __atomic_store_n (type *ptr, type val, int memmodel)

原子交换 type __atomic_exchange_n (type *ptr, type val, intmemmodel)

原子CAS bool __atomic_compare_exchange_n (type *ptr, type*expected, type desired, bool weak, intsuccess_memmodel, int failure_memmodel)

原子加/减/与/或/异或

type __atomic_op_fetch (type *ptr, type val, int memorder)type __atomic_fetch_op (type *ptr, type val, int memorder)add/sub/and/xor/or/nand

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 132

Page 139: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

操作类型 函数

原子TAS bool __atomic_test_and_set (void *ptr, int memorder)

原子Clear void __atomic_clear (bool *ptr, int memorder)

9.2.4 spin 操作

● x86平台,使用pause or rep;nop来实现自旋操作。define SPIN() __asm__ __volatile__("pause")define SPIN() __asm__ __volatile__(" rep; nop \n");

● AArch64,可使用nop实现类似的操作。define __nops(n) ".rept" n"\nnop\n.endr\n"define SPIN(n) asm volatile(__nops(n))

9.3 PostgreSQLPostgreSQL在多平台支持中,x86平台的对一些使用频率高的原子操作使用了汇编实现,目的为了屏蔽GCC版本可能出现的编译效率问题。

9.3.1 原子操作

9.3.1.1 内存屏障

为防止CPU指令重排,在并发编程中,需要显式的增加内存屏障。

● x86平台的内存屏障define pg_memory_barrier_impl() \ __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory", "cc")

● AArch64平台define pg_memory_barrier_impl() __atomic_thread_fence(__ATOMIC_SEQ_CST)define pg_memory_barrier_impl() __sync_synchronize()

9.3.1.2 spin 函数

数据库对自旋互斥锁的监控、死锁检测、和自旋时间可控的需求,往往不会调用Pthread_spinlock,均采用自定义的方式实现。不同平台的自旋操作实现存在差异。

● x86平台static __inline__ void pg_spin_delay_impl(void){ __asm__ __volatile__(" rep; nop \n");}

● AArch64平台(不支持rep指令)define pg_spin_delay_impl() ((void)0)

9.3.1.3 TAS & Clear

TAS对一个bit位做test_and_set操作。

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 133

Page 140: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

● x86平台static inline boolpg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr){ register char _res = 1; __asm__ __volatile__( " lock \n" " xchgb %0,%1 \n": "+q"(_res), "+m"(ptr->value):: "memory"); return _res == 0;}static inline voidpg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr){ /* * On a TSO architecture like x86 it's sufficient to use a compiler * barrier to achieve release semantics. */ __asm__ __volatile__("" ::: "memory"); ptr->value = 0;}

● AArch64平台static inline boolpg_atomic_test_set_flag_impl(volatile pg_atomic_flag *ptr){ return __sync_lock_test_and_set(&ptr->value, 1) == 0;}static inline voidpg_atomic_clear_flag_impl(volatile pg_atomic_flag *ptr){ __sync_lock_release(&ptr->value);}

9.3.1.4 CAS对32位or64位变量做compare_and_swap操作(以32位为例)。

● x86平台static inline boolpg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval){ char ret; /* * Perform cmpxchg and use the zero flag which it implicitly sets when * equal to measure the success. */ __asm__ __volatile__( " lock \n" " cmpxchgl %4,%5 \n" " setz %2 \n": "=a" (*expected), "=m"(ptr->value), "=q" (ret): "a" (*expected), "r" (newval), "m"(ptr->value): "memory", "cc"); return (bool) ret;}

● AArch64平台

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 134

Page 141: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

static inline boolpg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval){ /* FIXME: we can probably use a lower consistency model */ return __atomic_compare_exchange_n(&ptr->value, expected, newval, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);} static inline boolpg_atomic_compare_exchange_u32_impl(volatile pg_atomic_uint32 *ptr, uint32 *expected, uint32 newval){ bool ret; uint32 current; current = __sync_val_compare_and_swap(&ptr->value, *expected, newval); ret = current == *expected; *expected = current; return ret;}

9.3.1.5 Fetch_add原子加

● x86平台static inline uint64pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_){ uint64 res; __asm__ __volatile__( " lock \n" " xaddq %0,%1 \n": "=q"(res), "=m"(ptr->value): "0" (add_), "m"(ptr->value): "memory", "cc"); return res;}

● AArch64平台static inline uint64pg_atomic_fetch_add_u64_impl(volatile pg_atomic_uint64 *ptr, int64 add_){ return __sync_fetch_and_add(&ptr->value, add_);}

9.3.2 CRC 检验算法sse4.2 和 arm-v8分别提供了各自的crc指令。

● x86平台(src/port/pg_crc32c_sse42.c)include <nmmintrin.h>使用_mm_crc32_u8/16/32/64

● AArch64平台(src/port/pg_crc32c_armv8.c)include <arm_acle.h>使用__crc32cb/cw/cd/ch

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 135

Page 142: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

9.4 MySQL

9.4.1 Spin 函数● x86平台

define UT_RELAX_CPU() __asm__ __volatile__("pause")

● Aarch64平台define UT_RELAX_CPU() __asm__ __volatile__("" ::: "memory")

9.4.2 CRC 校验算法● x86平台

include <nmmintrin.h>_mm_crc32_u8/16/32/64

● AArch64平台include <arm_acle.h>使用__crc32cb/cw/cd/ch

说明

MySQL 5.7的patch,社区暂未合入:https://github.com/mysql/mysql-server/pull/136/files

9.4.3 CACHELINE 对齐优化多并发编程中的临界区变量属于写频率高的变量,如锁中的lockword,会由于上锁和释放锁等操作不停的修改状态,每次修改都会导致其他core中的CACHE_LINE失效。避免此类数据结构与其他变量间的干扰,会在应用中对该CACHELINE做对齐操作,使得该变量独占一个CACHELINE。

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 136

Page 143: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

MySQL中对X86平台做了很多CACHELINE的64字节对齐,由于华为鲲鹏920处理器的L3 CACHELINE为128字节,因此需要将MySQL源码中的对齐方式修改为128字节。修改的对齐数据结构如下:

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 137

Page 144: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

CACHE_LINE对齐

brt_search_latchesbtr_search_sysReadView::m_view_listtrx_sys_t::rw_trx_listtrx_sys_t::mysql_trx_listtrx_sys_t::rsegssrv_conc_t::n_activesrv_conc_t::n_activelock_sys_t::mutexlock_sys_t::wait_mutexmysql中原64Byte对齐的数据结构修改为128对齐

TPM提升至3%-4%

9.4.4 MySQL 因 ARM 弱内存序读写死锁问题说明

问题说明

近期使用sysbench对MySQL 5.7社区版进行读写测试,在测试一段时间后,MySQL5.7出现死锁现象,测试停止。

测试环境说明

● 网络拓扑

Sysbench安装在一台x86服务器上,MySQL database安装在一台ARM服务器上,通过交换机连接。

- CPU DDR 磁盘类型 操作系统

Sysbench

E5-2695 v4/2.10GHz/72core

384G SATA Euler2.0(4.16.2)

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 138

Page 145: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

- CPU DDR 磁盘类型 操作系统

MySQL HI1620/2.5GHz/96core

512G SSD Ubuntu16.04(4.4.0)

● 数据集

测试数据库包含64个表,每张表包含10000000条数据。

● 测试脚本

使用sysbench自带oltp.lua进行测试,具体测试命令如下:

/ssd/zqsource/rds-perf/source/sysbench-0.5/sysbench/sysbench --test=/ssd/zqsource/rds-perf/source/sysbench-0.5/sysbench/tests/db/oltp.lua --oltp-tables-count=64 --oltp-table-size=10000000 --mysql-host=$HOST --mysql-port=$PORT --mysql-db=$TABLE --mysql-user=$USER --mysql-password=$PASSWD --oltp-read-only=off --oltp-point-selects=10 --oltp-simple-ranges=1 --oltp-sum-ranges=1 --oltp-order-ranges=1 --oltp-distinct-ranges=1 --max-requests=0 --max-time=$TIME --report-interval=5--num-threads=$THREAD run

● MySQL配置文件[mysqld_safe]log-error=/data/mysql/log/mysql.logpid-file=/data/mysql/run/mysqld.pid

[client]socket=/data/mysql/run/mysql.sockdefault-character-set=utf8mb4

[mysqld]basedir=/home/mysql-8.0.17-linux-glibc2.12-x86_64basedir=/usr/local/mysqltmpdir=/data/mysql/tmpdatadir=/data/mysql/datasocket=/data/mysql/run/mysql.sockport=3306user=rootdefault_authentication_plugin=mysql_native_passwordinnodb_page_size=4kmax_connections=2000back_log=2048performance_schema=OFFmax_prepared_stmt_count=128000fileinnodb_file_per_tableinnodb_log_file_size=2048Minnodb_log_files_in_group=32innodb_open_files=10000table_open_cache_instances=64buffersinnodb_buffer_pool_size=230Ginnodb_buffer_pool_instances=16innodb_log_buffer_size=2048Mtunesync_binlog=1innodb_flush_log_at_trx_commit=1innodb_use_native_aio=1innodb_spin_wait_delay=180innodb_sync_spin_loops=25innodb_flush_method=O_DIRECTinnodb_io_capacity=30000innodb_io_capacity_max=40000innodb_lru_scan_depth=9000innodb_page_cleaners=16

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 139

Page 146: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

innodb_spin_wait_pause_multiplier=25perf specialinnodb_flush_neighbors=0innodb_write_io_threads=24innodb_read_io_threads=16innodb_purge_threads=32sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_AUTO_VALUE_ON_ZERO,STRICT_ALL_TABLESlog-bin=mysql-binssl=0table_open_cache=15000

复现方法

问题复现步骤如下:

步骤1 通过mysqld_safe运行MySQL。

步骤2 在Sysbench服务器上通过测试命令进行读写测试。

步骤3 进行长时间测试观察,测试经过一段时间后,sysbench返回显示TPS为0,在MySQL服务器上连接MySQL查询测试表内数据,长时间无返回。

----结束

问题分析

出现死锁问题时,通过gdb查看MySQL的线程栈信息,绝大部分线程均在等待锁。

通过对代码进行分析,ARM属于Relaxed Memory Models,而x86是基于Total StoreOrdering(TSO) model的更强保序的模型。

对于以下伪代码:

经过抽象后为如下伪代码:

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 140

Page 147: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

在x86上不可能出现r1=1,r2=0的情况,但是在ARM上可能出现r1=1并且r2=0的情况,MySQL的Mutex和RWLock都是基于原子操作+无锁算法自行实现的,这个模块的乱序情况就特别突出。对于其他模块/程序,如果临界区是由正确实现的锁保护的就会正常运行,为了保证逻辑正确,需要在ARM版本额外增加内存屏障,额外关注关键字的读写顺序。

Mariadb在2017年测试高通ARM服务器后,使用了__atomic系列函数修改了RWLock和Mutex的实现,__atomic系列函数可以保证SC(需指明内存序)并可以跨平台使用,可以保护lock_word、lock->waiters等关键字的读写顺序,解决MySQL死锁问题。

结论● 当前只有MariaDB官方支持ARM服务器:

https://mariadb.com/resources/blog/mariadb-server-102-now-available-qualcomm-centriqtm-2400-server-processor

● MySQL社区版和商业版没有官方支持ARM:

https://www.mysql.com/support/supportedplatforms/database.html● MariaDB可用的版本:

http://yum.mariadb.org/10.3/rhel7-aarch64/rpms/

鲲鹏数据库解决方案移植指南 9 鲲鹏数据库解决方案 移植指导大全

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 141

Page 148: 移植指南 - HUAWEI CLOUD · 2020. 9. 27. · 5 MongoDB 4.0.12 移植指南(CentOS 7.6).....51 5.1 介绍 ... 102 8.4 配置编译环境.....102 8.4.1 配置本地yum源

A 修订记录

发布日期 修订记录

2020-09-24 第三次正式发布

新增文档《MySQL 8.0.17 移植指南(OpenEuler 20.03)》。

2020-05-09 第二次正式发布

《MariaDB 10.3.8 移植指南(CentOS 7.6)》修改内容如下:

修改4.1 介绍中的MariaDB架构图。

《PostgreSQL 11.3 移植指南(CentOS 7.6)》修改内容如下:

修改7.1 介绍中的PostgreSQL架构图。

2020-03-20 第一次正式发布

鲲鹏数据库解决方案移植指南 A 修订记录

文档版本 02 (2020-09-30) 版权所有 © 华为技术有限公司 142