技术分享 | 国产麒麟 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
无法连接外网还需要准备以下步骤。
下载 boost ,门牌号:https://www.boost.org/users/history/version_1_73_0.html
安装依赖包
[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 源进来比如阿里的 Centos8
。如果你连 yum 源也装不了你就直接把 rpm 包给下载下来。门牌号:https://developer.aliyun.com/packageSearch?word=gcc-toolset
再或者你时间够多想玩点刺激的也可以考虑手工编译一个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相关推荐
- 在国产麒麟操作系统上如何安装ONLYOFFICE桌面编辑器V7.3
在国产麒麟操作系统上如何安装 ONLYOFFICE 桌面编辑器 V7.3 在国产麒麟操作系统上如何安装 ONLYOFFICE Docs 7.3 之前的推文介绍过,如何把国产麒麟操作系统作为服务器端,安 ...
- 麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127484901 红胖子(红模仿)的博文大全:开发技术集 ...
- 麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127532255 红胖子(红模仿)的博文大全:开发技术集 ...
- 在树莓派上编译安装golang环境
最近买了个pi,想在上面装个golang环境,用于学习,发现网上资料都不全,当我在看<Go语言学习笔记>的时候,发现里面有教如何在linux上编译安装Go,既然是源码自举编译,相信树莓派上 ...
- 关于 在国产麒麟系统上使用QProcess配合管道命令执行shell命令获取预期结果输出失败 的解决方法
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/126678079 红胖子(红模仿)的博文大全:开发技术集 ...
- Ubuntu上编译安装迅雷XwareDesktop
Ubuntu上编译安装说明 本页介绍如何在Ubuntu 14.04及以上的系统上手动编译安装Xware Desktop. 由于迅雷官方没有发布64位版的xware,Xware Desktop的作者无法 ...
- 麒麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/129858821 红胖子网络科技博文大全:开发技术集合( ...
- 在PK体系下的CentOS上编译安装 MySQL 5.7
本文主要介绍如何在 PK 体系下的 CentOS 上编译安装 MySQL 5.7,本文使用的操作系统环境为: CentOS 版本: # cat /etc/redhat-release CentOS L ...
- 在Ubuntu 14.04 64bit上编译安装Crtmpserver trunk svn 811版本!
这里仅在 在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务 基础上补充一下在Ubuntu 14.04上编译安装Crtmpserver的方法,以作备忘.因为Ubuntu 1 ...
最新文章
- WIN7无法记住远程登录密码
- 读取Exchange的用户未读邮件数的几种方法
- Linux有关Shell算数运算的用法补充笔记
- jpa root.join_JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)
- python n个list如何组成矩阵_通过学习在processing中操作图片,掌握python 列表操作...
- 手册中数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留的理解
- 《南溪的目标检测学习笔记》的笔记目录
- 10.程序员的自我修养---内存
- Android UI学习之ListView(使用ArrayAdapter和SimpleAdapter)
- c语言实验报告模板电子版,c语言实验报告模板1.pdf
- 最新互联网架构师视频教程+源码20G
- 基于SSM的设备租赁管理系统
- mac安装软件的一般目录
- 第1关:启动 MongoDB
- 我的世界服务器配置文件
- 我是码客,P客,飘客,接客,代客,码客,乘客,普客
- FPGA开发基本流程
- 怎么解决网页中播放视频没有声音?
- MySQL 表设计的经验准则
- windows用Redis Desktop Manager无法通过6379端口连接ubuntu redis问题
热门文章
- 学习大数据和云计算是不是都是会有不错的发展前景
- 千元机和GTA之间,只差一个超级游戏
- 「大一统」大模型论文爆火,4种模态任意输入输出,华人本科生5篇顶会一作,网友:近期最不可思议的论文...
- 基于Python的金融数据分析以及经济数据应用
- centos 中svn服务的启动、关闭、重启, 以及添加开机启动
- 我用python,帮朋友写了一个“制作工资条”的自动化程序!
- js正则表达式判断输入是否为数字
- 手机如何能看java文件管理器_基于安卓Android的手机文件管理器的设计(AndroidStudio)...
- linux中的虚拟化部署
- 2021-06-30 SuperGlue