使用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的共享compat 5.1 lib(MySQL-shared-compat-5.1),覆盖了不同版本的libs,直到16我相信。

之后,我可以很好地安装MySQL-shared-compat-5.1XtraBackup 。 剩下的唯一问题是PHP使用libmysqlclient.so.18文件,因此httpd服务不会再启动。 我修正了(我认为)脏修复…通过创build一个符号链接libmysqlclient.so.18 -> libmysqlclient.so.16 。 之后,Apache加载没有问题。 它仍然感觉不对。

我对大部分这些东西并不是很有经验,所以我希望有人能够解释我正确的修复方法,如果可能的话,让Apache和XtraBackup与它们的libmysqlclient版本一起运行。

MySQL客户端库绑定到它们所在的MySQL版本。 Perl的DBD :: mysql库是在构build时针对可用的MySQL客户端库进行编译的。 当Redhat(和扩展名为CentOS)构buildRPM时,它们将从构build时提供的源代码构build它们。

CentOS 5的默认MySQL安装附带了MySQL 5.0.95,它提供了libmysqlclient.so.15。 看来你的系统安装了更新版本的MySQL。 如果你使用Percona的XtraBackup,你可能会运行Percona服务器(Percona Server是由Percona发布的MySQL的更新版本)。

你有几个select:

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

  2. 如果通过RPM安装了更新版本的MySQL:
    尝试find一个类似于你在CentOS 6下做的兼容库。

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

CentOS(和RHEL)预计所有安装的软件都将使用RPM和yum进行安装。 如果超出这个范围,那么您就有可能无法使用与定制安装相关的软件的RPM。 这听起来就是这样,因为你不仅没有合适的版本的perl-DBD-mysql可用,而且你也有PHP链接到较新版本的MySQL。