【MySQL】KylinV10 ARM 服务器上编译MySQL 5.7 XtraBackup

在ARM架构服务器(如aarch64)上编译Percona XtraBackup 2.4,需先安装依赖库、处理boost库依赖,并使用CMake配置编译。

注意: 编译服务器的内存别少于8G,否则大概率编译会卡住。

1.依赖安装

编译前需安装开发工具和库依赖。以YUM包管理器为例,执行:

bash 复制代码
yum install -y cmake gcc gcc-c++ libaio libaio-devel automake autoconf bison libtool ncurses-devel libgcrypt-devel libev-devel curl-devel 

部分系统可能需额外安装crypt-devel以解决libgcrypt.h缺失问题。

2. boost库配置

Percona XtraBackup 2.4 需要Boost 1.59.0。

若系统未预装,需手动下载并指定路径:

  • 下载Boost源码:wget https://archives.boost.io/release/1.59.0/source/boost_1_59_0.tar.gz
  • 解压至指定目录(如/usr/local/boost/):tar zxf boost_1_59_0.tar.gz -C /usr/local/boost/
  • 编译时通过-DWITH_BOOST参数指向该路径。

为什么 Percona XtraBackup 2.4.28 不能使用系统自带的 Boost 1.78 ?

Percona XtraBackup 2.4.28 强制要求使用 Boost 1.59.0 而不是系统自带的 Boost 1.78,主要有以下几个原因:

API 和 ABI 兼容性问题

  • 二进制兼容性:Boost 库在不同版本间可能存在二进制接口(ABI)不兼容
  • API 变更:Boost 1.59 到 1.78 之间某些API可能发生了变化,导致编译或运行时错误
  • 内部依赖:XtraBackup 可能依赖特定版本的Boost内部实现细节
  1. 测试和验证限制
  • Percona 只在 Boost 1.59.0 上进行了全面测试和验证
  • 新版本Boost可能引入未预期的行为变化或性能差异
  1. 历史版本依赖
  • XtraBackup 2.4.28 是基于较旧的MySQL/Percona Server代码分支开发的
  • 当时开发环境使用的就是Boost 1.59.0
  1. 已知问题规避
  • 特定版本的Boost可能包含已知问题的修复或规避方案

3. 源码获取与编译

3.1. 下载源码:从Percona官方源获取2.4版本源码包(如2.4.28):

bash 复制代码
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/source/tarball/percona-xtrabackup-2.4.28.tar.gz

3.2. 解压并编译:

bash 复制代码
tar zxf percona-xtrabackup-2.4.28.tar.gz
cd percona-xtrabackup-2.4.28
cmake -DBUILD_CONFIG=xtrabackup_release -DWITH_MAN_PAGES=OFF  -DWITH_BOOST=/usr/local/boost
make -j$(nproc)
  • cmake阶段会检查依赖,若缺失库(如libev、cURL),需提前安装对应-devel`包。
  • make -j$(nproc)使用所有CPU核心加速编译,可根据硬件调整。

4.常见问题解决

  • Boost下载失败:若网络受限,提前下载Boost并禁用自动下载(通过-DDOWNLOAD_BOOST=1)。
  • 依赖库未找到:如提示Cannot find gcrypt.h,确保libgcrypt-devel已安装;若libev缺失,安装libev-devel
  • CMake错误:检查PATH是否包含cmake,并确认源码路径无中文或空格。

5.验证与安装

编译完成后,验证二进制文件:

bash 复制代码
make install

安装路径默认为/usr/local/xtrabackup/,可调整CMAKE_INSTALL_PREFIX自定义。

复制代码
# ll /usr/local/xtrabackup/
total 0
drwxr-xr-x 2 root root 111 Dec 22 21:35 bin
drwxr-xr-x 3 root root  20 Dec 22 21:35 lib
drwxrwxr-x 9 root root 203 Dec 22 21:35 xtrabackup-test

# ll /usr/local/xtrabackup/bin/
total 212500
lrwxrwxrwx 1 root root        10 Dec 22 21:35 innobackupex -> xtrabackup
-rwxr-xr-x 1 root root  11421640 Dec 22 21:25 xbcloud
-rwxr-xr-x 1 root root      3020 Dec 22 21:23 xbcloud_osenv
-rwxr-xr-x 1 root root   5810448 Dec 22 21:25 xbcrypt
-rwxr-xr-x 1 root root   5954856 Dec 22 21:25 xbstream
-rwxr-xr-x 1 root root 194400768 Dec 22 21:34 xtrabackup

/usr/local/xtrabackup/bin/xtrabackup  --version

xtrabackup: recognized server arguments:
/usr/local/xtrabackup/bin/xtrabackup version 2.4.28 based on MySQL server 5.7.40 Linux (aarch64) (revision id: 44a8f7b)


file /usr/local/xtrabackup/bin/xtrabackup

/usr/local/xtrabackup/bin/xtrabackup: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=c259a4707495cdad9da6350f38a40ad0cef3d262, for GNU/Linux 3.7.0, with debug_info, not stripped

参考

boost_1_59_0

https://www.boost.org/releases/1.59.0/

Percona XtraBackup/Percona XtraBackup 2.4

https://www.percona.com/downloads

Compiling and Installing from Source Code

https://docs.percona.com/percona-xtrabackup/2.4/installation/compiling_xtrabackup.html

ARM架构下麒麟V10操作系统编译xtrabackup

https://blog.csdn.net/weixin_58090109/article/details/118493212

国产麒麟 arm 上编译安装 xtrabackup8

https://opensource.actionsky.com/20220718-xtrabackup8

MySQL 备份利器 Xtrabackup 全解析:从部署到恢复的实战指南

https://mp.weixin.qq.com/s/YWvR32KuOR6HBJAcZ2trHw

相关推荐
Bdygsl4 分钟前
MySQL(1)—— 基本概念和操作
数据库·mysql
身如柳絮随风扬13 分钟前
什么是左匹配规则?
数据库·sql·mysql
jiankeljx36 分钟前
mysql之如何获知版本
数据库·mysql
小李来了!1 小时前
数据库DDL、DML、DQL、DCL详解
数据库·mysql
我科绝伦(Huanhuan Zhou)2 小时前
【生产案例】MySQL InnoDB 数据损坏崩溃修复
数据库·mysql·adb
海棠蚀omo3 小时前
从零敲开 MySQL 的大门:库与表的基础操作实战(保姆级入门指南)
数据库·mysql
廋到被风吹走3 小时前
【MySql】超时问题分析
java·数据库·mysql
y = xⁿ3 小时前
重生之我创作出了小红书:对象存储模块,用户资料模块
后端·mysql·intellij-idea
Y001112363 小时前
Day10-MySQL-事物
数据库·sql·mysql
轩情吖3 小时前
MySQL之用户管理
数据库·c++·后端·mysql·权限管理·用户管理