使用 libmysqlclient.so.18 安装 XtraBackup

使用 libmysqlclient.so.18 安装 XtraBackup

现在的情况

我想在运行主数据库的 VPS(Centos 5)上安装 XtraBackup。在 rpm 安装过程中,它告诉我缺少一个名为 的依赖项perl(DBD::mysql)

当我尝试yum install这种依赖关系时,它告诉我:

Error: Missing Dependency: libmysqlclient.so.15(libmysqlclient_15)(64bit) is needed by package perl-DBD-MySQL-3.0007-2.el5.x86_64 (base) Error: Missing Dependency: libmysqlclient.so.15()(64bit) is needed by package perl-DBD-MySQL-3.0007-2.el5.x86_64 (base)

我检查时发现/usr/lib/mysql有几个不存在的符号链接,名为 libmysqlclient.so.15。唯一有效的符号链接是libmysqlclient.solibmysqlclient_r.so,它们链接到的/usr/lib64/libmysqlclient.so是指向的符号链接libmysqlclient.so.18

看来我只安装了 18 版本。

先前的情况

我还在我的另一台 VPS(Centos 6)上安装了 XtraBackup。那里发生了完全相同的错误。最后通过下载 mysql 的共享兼容 5.1 库(MySQL-shared-compat-5.1)解决了这个问题,该库涵盖了不同版本的库,我相信是 12 到 16。

之后,我可以顺利安装MySQL-shared-compat-5.1XtraBackup唯一剩下的问题是 PHP 使用该libmysqlclient.so.18文件,因此 httpd 服务将无法启动。我使用(我认为)肮脏的修复程序修复了这个问题...只需创建一个符号链接libmysqlclient.so.18 -> libmysqlclient.so.16。之后,apache 加载没有问题。但仍然感觉不对劲。

我对这些东西大部分都不太有经验,所以我希望有人能向我解释正确的解决方法,以便让 Apache 和 XtraBackup 都能使用它们的 libmysqlclient 版本运行(如果可能的话)。

答案1

MySQL 客户端库与构建它们的 MySQL 版本相关。Perl 的 DBD::mysql 库是根据构建时可用的 MySQL 客户端库进行编译的。当 Redhat(以及 CentOS)构建 RPM 时,它们会从构建时提供的源代码构建它们。

CentOS 5 默认安装的 MySQL 是 MySQL 5.0.95,它提供了 libmysqlclient.so.15。看来您的系统安装了较新版本的 MySQL。如果您使用的是 Percona 的 XtraBackup,则可能正在运行 Percona Server(Percona Server 是 Percona 推出的 MySQL 更新版本)。

您有以下几种选择:

  1. 如果 Percona Server 是通过 RPM 安装的:
    从 Percona 的存储库安装 Percona-Server-shared-compat RPM

  2. 如果通过 RPM 安装了较新版本的 MySQL:
    尝试找到与在 CentOS 6 下所做的类似的兼容库。

  3. 如果手动安装了较新版本的 MySQL:
    在具有 libmysqlclient.so.18 文件和相关开发头文件的系统上重新编译 perl-DBD-mysql 源 RPM,然后安装生成的二进制文件。CentOS 提供从源 RPM 重建的说明。或者,您也可以从源代码下载并安装 Percona XtraBackup。

CentOS(和 RHEL)希望您安装的所有软件都使用 RPM 和 yum 安装。如果您不这样做,则可能会面临无法再使用 RPM 安装链接到自定义安装的软件的风险。听起来这里的情况就是这样,因为您不仅没有合适的 perl-DBD-mysql 版本,而且您还将 PHP 链接到较新版本的 MySQL。

相关内容