PolarDB-X xtrabackup(CentOS 7 二进制)在 CentOS 8 / RHEL 8 / Rocky 8 / Alma 8(glibc 2.28)上的
零侵入兼容运行方案
PolarDB-X下使用备份工具t-polardbx-engine-xtrabackup 出现问题
方案一:
一、背景
PolarDB-X 发布的 xtrabackup80 8.0.32-34 是为 CentOS 7 编译的,动态链接:
• libgcrypt.so.11(1.5.3 系列)
• libprocps.so.4(3.3.10 系列)
新版系统只提供 libgcrypt.so.20 与 libprocps.so.8,直接运行会报:
error while loading shared libraries: libgcrypt.so.11: cannot open shared object file…
二、设计目标
不降级系统已有 RPM,保证 top、ps、sysctl 等命令保持新版。
不编译、不改动现有 glibc。
支持 一键开启/关闭 兼容模式,可随时回退到原生环境。
对 systemd、crontab、Ansible 无 side-effect。
三、实现思路
“库文件解包独立目录 + 专用 wrapper 脚本 + 环境变量临时注入”
cd /opt
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/libgcrypt-1.5.3-14.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/procps-ng-3.3.10-28.el7.x86_64.rpm
创建兼容树
mkdir -p /opt/polardbx-xtrabackup80-compat/{lib,bin}
仅提取库
cd /opt/polardbx-xtrabackup80-compat
rpm2cpio /opt/libgcrypt-1.5.3-14.el7.x86_64.rpm | cpio -idmv
rpm2cpio /opt/procps-ng-3.3.10-28.el7.x86_64.rpm | cpio -idmv
mv usr/lib64/libgcrypt.so.11* lib/
mv usr/lib64/libprocps.so.4* lib/
ldconfig -n "$PWD/lib"
rm -rf usr lib64
生成 wrapper(名称与原命令相同,便于 PATH 覆盖)
cat > bin/xtrabackup <<'EOF'
#!/bin/bash
export LD_LIBRARY_PATH=/opt/polardbx-xtrabackup80-compat/lib:$LD_LIBRARY_PATH
exec /u01/polardbx_engine_xtrabackup80/bin/xtrabackup "$@"
EOF
chmod +x bin/xtrabackup
提供“开关”函数
cat > /etc/profile.d/polardbx-xtrabackup80-compat.sh <<'EOF'
# 开启兼容
enable_polardbx_xtrabackup_compat() {
export PATH=/opt/polardbx-xtrabackup80-compat/bin:$PATH
echo "PolarDB-X xtrabackup80 兼容模式已开启"
}
# 关闭兼容
disable_polardbx_xtrabackup_compat() {
export PATH=${PATH///opt/polardbx-xtrabackup80-compat/bin:/}
unset LD_LIBRARY_PATH
echo "PolarDB-X xtrabackup80 兼容模式已关闭"
}
EOF
chmod 644 /etc/profile.d/polardbx-xtrabackup80-compat.sh
五、使用方法
临时单次运行(推荐)
/opt/polardbx-xtrabackup80-compat/bin/xtrabackup --version
/opt/polardbx-xtrabackup80-compat/bin/xtrabackup --backup --target-dir=/backup/...
当前 shell 全程开启
source /etc/profile.d/polardbx-xtrabackup80-compat.sh
enable_polardbx_xtrabackup_compat
xtrabackup --version # 直接调用即是兼容版
关闭回退
disable_polardbx_xtrabackup_compat
which xtrabackup # 应提示找不到,恢复系统原状
六、systemd 定时备份示例(无需改全局环境)
[Unit]
Description=PolarDB-X physical backup
[Service]
Type=oneshot
ExecStart=/opt/polardbx-xtrabackup80-compat/bin/xtrabackup
--backup --stream=xbstream --target-dir=/backup
> /backup/full_$(date +%F).xbstream
服务单元默认继承最小环境,wrapper 已内置 LD_LIBRARY_PATH,无需额外设置。
七、卸载 / 回滚
rm -rf /opt/polardbx-xtrabackup80-compat /etc/profile.d/polardbx-xtrabackup80-compat.sh
系统即刻回到未安装任何旧库的原始状态。
八、总结
• 零编译、零降级、零污染。
• 所有旧库文件仅存在于 /opt,系统 RPM 数据库无记录。
• 支持同机共存官方新版 xtrabackup(若后续发布 EL8 包)。
• 一键开关,生产环境可放心使用。
方案二:
PolarDB-X xtrabackup80 最小侵入兼容方案
CentOS 8/RHEL 8/Rocky 8 快速安装/卸载手册
一、问题
PolarDB-X 提供的 xtrabackup80 依赖:
libgcrypt.so.11(1.5.3 系列)
libprocps.so.4(3.3.10 系列)
新系统仅提供 libgcrypt.so.20 与 libprocps.so.8,直接运行报:
error while loading shared libraries: libgcrypt.so.11: cannot open shared object file…
二、解决思路
强制安装“纯库” RPM → 追加旧 .so → ldconfig 注册 → 随时整包卸载回退
系统可执行文件(ps、top 等)保持新版本,零冲突。
三、操作步骤(root)
下载官方 CentOS 7 库 RPM
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/libgcrypt-1.5.3-14.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/procps-ng-3.3.10-28.el7.x86_64.rpm
强制安装(仅库文件,不覆盖新版工具)
rpm -ivh --force --nodeps libgcrypt-1.5.3-14.el7.x86_64.rpm procps-ng-3.3.10-28.el7.x86_64.rpm
ldconfig
验证
ldconfig -p | grep -E 'libgcrypt.so.11|libprocps.so.4'
/u01/polardbx_engine_xtrabackup80/bin/xtrabackup --version
正常输出版本即成功。
四、卸载回退(一键恢复原生)
rpm -e --nodeps libgcrypt-1.5.3-14.el7 procps-ng-3.3.10-28.el7
ldconfig
旧库文件被完整删除,系统回到安装前状态。
五、注意事项
本方案不编译、不改系统配置、不降级现有命令。
强制安装仅添加 .so.4 / .so.11 符号链接,与原新版库共存。
适用于一次性备份场景,也可放入 Ansible / Salt / 脚本自动化。


