[转帖]技术分享 | 国产麒麟 arm 上编译安装 xtrabackup8
原创
作者:王向
爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。擅长数据库故障处理。对数据库技术和 python 有着浓厚的兴趣。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
需求背景
由于官方上游还没有提供 arm 架构可用的二进制通用安装包,所以我们只能选择进行编译安装或者 rpm 包安装。
这里选择了更复杂费时的编译安装,对于为什么选用编译安装大概有以下原因:
- 调整分发更容易一些
- 同一台机器装多个版本共存
下面我就进入操作环节吧。
环境准备
我这里的机器环境信息如下:
- 系统:kylin v10
- 架构: aarch64
- 内核:4.19.90-17.5
本文内所有步骤都基于该环境
[root@wx-test ~]# uname -a
Linux wx-test 4.19.90-17.5.ky10.aarch64 #1 SMP Fri Aug 7 13:35:33 CST 2020 aarch64 aarch64 aarch64 GNU/Linux
[root@wx-test ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"复制
前期准备
- 下载 xtrabackup 源码包,门牌号:Download Percona XtraBackup 8.0
[root@wx-test ~]# ll
总用量 291168
-rw-rw-r-- 1 dba dba 298154792 6月 27 14:18 percona-xtrabackup-8.0.27-19.tar.gz 
# 顺手把解压缩也做了
[root@wx-test ~]$ tar xf percona-xtrabackup-8.0.27-19.tar.gz 
# 顺手在创建一个目录来存储已编译的文件
[root@wx-test ~]$ cd percona-xtrabackup-8.0.27-19
[root@wx-test percona-xtrabackup-8.0.27-19]$ pwd
/home/dba/percona-xtrabackup-8.0.27-19
[root@wx-test percona-xtrabackup-8.0.27-19]$ mkdir build
[root@wx-test percona-xtrabackup-8.0.27-19]$ cd build复制
无法连接外网还需要准备以下步骤。
安装依赖包
[root@wx-test percona-xtrabackup-8.0.27-19]$ yum install openssl-devel libaio libaio-devel automake autoconf \
bison libtool ncurses-devel libgcrypt-devel libev-devel libcurl-devel zlib-devel \
vim-common libcurl-devel libudev-devel复制
安装编译环境
sudo yum -y install cmake复制
重点来了,编译xtrabackup8需要gcc 版本 >= 5.3,万万不可以使用 yum 直接装个 gcc 就开始去编译会浪费大把时间。
这里提供一个快速安装高版本 gcc 的方式。
1.搜索当前源内是否存在以下包
yum search gcc-toolset复制
2.安装gcc和scl
yum -y install kylin-release scl-utils scl-utils-build
yum -y install gcc-toolset-11-gcc
yum -y install gcc-toolset-11-gcc-c++复制
注意:如果你的源里没有
gcc-toolset。那你需要安装一个 yum 源进来。如果你连 yum 源也装不了你就直接把 rpm 包给下载下来。再或者你时间够多想玩点刺激的也可以考虑手工编译一个gcc出来。
3.使用 scl 开启咱的高版本 gcc
source /opt/rh/gcc-toolset-11/enable
source scl_source enable gcc-toolset-11
# 检查一下版本
[root@wx-test ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/gcc-toolset-11/root/usr/libexec/gcc/aarch64-redhat- linux/11/lto-wrapper
Target: aarch64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable- languages=c,c++,fortran,lto --prefix=/opt/rh/gcc-toolset-11/root/usr -- mandir=/opt/rh/gcc-toolset-11/root/usr/share/man --infodir=/opt/rh/gcc-toolset- 11/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla -- enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions -- enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with- isl=/builddir/build/BUILD/gcc-11.2.1-20210728/obj-aarch64-redhat-linux/isl- install --enable-gnu-indirect-function --build=aarch64-redhat-linux
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.2.1 20210728 (Red Hat 11.2.1-1) (GCC)复制
开始编译
1.运行cmake
# 可以联外网使用:
[root@wx-test build]$ cmake3 -DDOWNLOAD_BOOST=ON -DWITH_BOOST=./ \ -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF ..
# 不可以连接外网:记得我们刚才准备的boost吧
[root@wx-test build]$ tar xf boost_1_73_0.tar.bz2
[root@wx-test build]$ cmake3 -DWITH_BOOST=./boost_1_73_0 -DDOWNLOAD_BOOST=OFF \ -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF .. 
...省略....
-- CMAKE_CXX_FLAGS_DEBUG: -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -ffunction-sections -fdata-sections -O2 -g - DNDEBUG
-- CMAKE_CXX_FLAGS_RELEASE: -ffunction-sections -fdata-sections -O3 -DNDEBUG
-- CMAKE_CXX_FLAGS_MINSIZEREL: -ffunction-sections -fdata-sections -Os -DNDEBUG -- CMAKE_C_LINK_FLAGS:
-- CMAKE_CXX_LINK_FLAGS:
-- CMAKE_EXE_LINKER_FLAGS
-- CMAKE_MODULE_LINKER_FLAGS
-- CMAKE_SHARED_LINKER_FLAGS
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dba/percona-xtrabackup-8.0.27- 19/build复制
注意:这一步出错率较高,一般因为环境不同所需依赖也可能出现差异化。根据失败提示去安装缺失依赖即可。
2.执行make
# -j指定的是CPU核数
[root@wx-test build]$ make -j22 
...省略.... 
In function ‘char* strncpy(char*, const char*, size_t)’, inlined from ‘void xb_set_plugin_dir()’ at /home/dba/percona-xtrabackup- 8.0.27-19/storage/innobase/xtrabackup/src/xtrabackup.cc:7728:12: /usr/include/bits/string_fortified.h:106:34: warning: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 512 equals destination size [-Wstringop-truncation] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[100%] Linking CXX executable ../../../../runtime_output_directory/xtrabackup 
[100%] Built target xtrabackup复制
注意:这一步虽然出错率不高,但问题千奇百怪。大家遇山开山,遇水架桥。也可以留言进行讨论
3.执行make install
[root@wx-test build]$ make install
...省略.... 
-- Installing: /usr/local/xtrabackup/man/man1/mysqlpump.1
-- Installing: /usr/local/xtrabackup/man/man1/mysqlrouter.1 -- Installing: /usr/local/xtrabackup/man/man1/mysqlrouter_keyring.1
-- Installing: /usr/local/xtrabackup/man/man1/mysqlrouter_passwd.1
-- Installing: /usr/local/xtrabackup/man/man1/mysqlrouter_plugin_info.1
-- Installing: /usr/local/xtrabackup/man/man1/mysqlshow.1
-- Installing: /usr/local/xtrabackup/man/man1/mysqlslap.1
-- Installing: /usr/local/xtrabackup/man/man1/perror.1
-- Installing: /usr/local/xtrabackup/man/man1/zlib_decompress.1
-- Installing: /usr/local/xtrabackup/man/man8/mysqld.8
-- Up-to-date: /usr/local/xtrabackup/man/man8/mysqld.8
[root@wx-test build]$ /usr/local/xtrabackup/bin/xtrabackup --version /usr/local/xtrabackup/bin/xtrabackup version 8.0.27-19 based on MySQL server 8.0.27 Linux (aarch64) (revision id: 50dbc8dadda)复制
END
[转帖]技术分享 | 国产麒麟 arm 上编译安装 xtrabackup8的更多相关文章
- 麒麟Linux上编译subversion
		麒麟Linux上编译subversion svn-1.7不支持svn info --show-item=revision[1]获取revision. svn-1.12开始不能保存密码stackover ... 
- Linux上编译安装PHP
		这篇文章主要介绍了关于Linux上编译安装PHP,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 之前在服务器上编译安装了PHP运行环境,但是安装完过了一段时间就差不多忘记了,只是零零星 ... 
- MAC 上编译安装nginx-rtmp-module 流媒体服务器
		MAC 上编译安装nginx-rtmp-module 流媒体服务器 记录踩坑过程 下载nginx和nginx-rtmp-module wget http://nginx.org/download/ng ... 
- 在centos6,7 上编译安装内核
		小编以前写过一篇软件的源码编译安装,今天小编再给大家带来一篇内核的编译安装. 今天,就以centos7 编译安装最新版本4.13.2 内核为例,给大家详解.编译安装之前,检查一下自己的磁盘空间 ... 
- 在CentOS6.7操作系统上编译安装httpd2.4
		功能描述: 在CentOS6.7操作系统上,编译安装apache服务,实现定制功能等 一.安装前提 1)安装编译httpd需要的软件包 [root@bqe6tewv41kx ~]# yum -y i ... 
- 在树莓派1B上编译安装lnmp服务器
		最近一周给部门内部搭建考试系统,选择使用PHPEMS.这是个开源的系统,唯一缺点是PHP的版本比较低,只能使用5.2或5.3.而我的树莓派系统更新后使用apt-get安装得到的PHP版本为5.4.由于 ... 
- 尝试在CentOS7.2上编译安装Swift
		苹果提供 Ubuntu上构建Swift 的教程,通过这个教程我尝试使用CentOS7.2上玩儿一把.目前已经成功在CentOS7.2上班成功安装 swift 4.0 https://github.co ... 
- 最小化安装的centos7.5上编译安装git2.19
		VMware Workstation已经采用最小化安装CentOS7,显示版本为CentOS7.5,准备采用yum安装git. 采用yum list git发现可安装的GIT软件包版本1.8.3.1, ... 
- 如何在linux平台上编译安装zlib软件(公司部分线上机器缺少zlib不能安装supervisor)
		文章在Centos 6.5 linux平台上演示一下如何进行编译安装zlib软件,并配置相关的选项加载使用.示范从下载到安装并配置进行使用过程一系列整套讲解,希望可以给网友考虑使用,谢谢. 工具 ... 
- centos7上编译安装mysql5.6
		注意,在做实验室统一关闭防火墙做的,在生产环境需要做防火墙规则的,大家要注意,做的时候尽量都是模仿生产环境的,比如服务一般都在/data/soft下面,尽量避免在/usr/local/下面. 安装编译 ... 
随机推荐
- Base64编码:数据传输的安全使者
			Base64编码是一种将二进制数据转换为可传输的文本表示形式的方法,它在全球范围内被广泛应用于网络通信.数据存储和传输等领域.本文将从多个方面介绍Base64编码的原理.应用及其在现实场景中的优势,帮 ... 
- Cesium案例解析(九)——Rotatable2DMap旋转2D地图
			目录 Cesium的Rotatable 2D Map示例展示了一个旋转的二维地图: 'use strict'; var viewer = new Cesium.Viewer('cesiumContai ... 
- Istio与Kubernetes:资源管理与协同解析
			本文分享自华为云社区<istio资源介绍以及和kubernetes资源扭转关系>,作者:可以交个朋友. 一.istio原理 Istio的原理是拦截 Kubernetes 中创建 Pod 的 ... 
- 云图说|分钟级构建业务大屏——Astro大屏应用
			本文分享自华为云社区<[云图说]第271期 Astro Canvas一站式数据可视化开发,分钟级构建业务大屏>,作者:阅识风云 . Astro大屏应用(Astro Canvas)是Astr ... 
- 高性能利器!华为云MRS ClickHouse重磅推出!
			摘要:华为智能数据湖MRS服务即将上线ClickHouse高性能引擎集群,用户只需要几分钟,就可以轻松方便地一键式完成集群部署搭建,快速拥有PB级数据的秒级交互查询分析能力,帮助用户带来极致的性能体验 ... 
- 开心档之MySQL 导入数据
			MySQL 导入数据 本章节我们为大家介绍几种简单的 MySQL 导入数据命令. 1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的 ... 
- A/B 实验避坑指南:为什么不建议开 AABB 实验
			更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 本文将针对日常开设 A/B 实验过程中一个不太合理的使用方法--AABB 实验进行详细的解释,告诉大家为什么不建议 ... 
- Solon v1.11.3 发布,第101个发布版本喽
			一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ... 
- git clone克隆速度慢的解决办法
			平常我们经常会遇到github的访问或者clone项目很慢甚至于无法访问,那么这个时候我们经常做的事情是修改hosts会比较多一些或者使用github的镜像站. 一.更改hosts文件的方式 常用的在 ... 
- 柔性上肢康复机器人研究中的VR技术
			上肢康复机器人用于对脑卒中患者进行上肢康复治疗,能够维持和扩大患者关节活动度.增强肌肉力和协调性,以防止肌肉萎缩.关节痉挛等各类症状的出现,最终重建肢体功能,以便回归正常生活.现有的上肢康复机器人训练 ... 
 
			
		