Текущая ситуация
Я хочу установить XtraBackup на свой VPS (Centos 5), на котором работает моя основная база данных. Во время установки 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.so
и libmysqlclient_r.so
и они связаны с /usr/lib64/libmysqlclient.so
что является символической ссылкой на libmysqlclient.so.18
.
Вроде у меня установлена только 18 версия.
Предыдущая ситуация
Я также установил XtraBackup на другой свой VPS (Centos 6). Здесь произошла точно такая же ошибка. Наконец, он исправил это, загрузив общую библиотеку совместимости 5.1 mysql (MySQL-shared-compat-5.1), которая охватывала разные версии библиотек, с 12 по 16, я полагаю.
После этого я мог установить MySQL-shared-compat-5.1
и XtraBackup
приятно. Единственная оставшаяся проблема заключалась в том, что PHP использует libmysqlclient.so.18
файл, и, следовательно, служба httpd больше не запускается. Я исправил это (я думаю) грязным исправлением ... Просто создав символическую ссылку libmysqlclient.so.18 -> libmysqlclient.so.16
. После этого apache загрузился без проблем. Тем не менее, это совсем не так.
Я не слишком разбираюсь в этих вещах, поэтому надеюсь, что кто-нибудь сможет объяснить мне, какое исправление нужно делать, чтобы Apache и XtraBackup работали с их версиями libmysqlclient, если это вообще возможно.
Клиентские библиотеки MySQL привязаны к той версии MySQL, из которой они созданы. Библиотека Perl DBD :: mysql компилируется с клиентскими библиотеками MySQL, доступными при ее сборке. Когда Redhat (и, как следствие, CentOS) создают RPM, они собирают их из источника, предоставленного во время сборки.
Установка MySQL по умолчанию в CentOS 5 поставляется с MySQL 5.0.95, который предоставляет libmysqlclient.so.15. Похоже, что в вашей системе установлена более новая версия MySQL. Если вы используете Percona XtraBackup, вы можете вместо этого использовать Percona Server (Percona Server - это обновленная сборка MySQL, выпущенная Percona).
У вас есть несколько вариантов:
Если Percona Server установлен через RPM:
Установите RPM Percona-Server-shared-compat из репозиториев Percona
Если более новая версия MySQL установлена через RPM:
Попробуйте найти библиотеку совместимости, аналогичную той, что вы делали в CentOS 6.
Если более новая версия MySQL установлена вручную:
Перекомпилируйте исходный RPM-пакет perl-DBD-mysql в системе с файлом libmysqlclient.so.18 и соответствующими заголовками разработки, а затем установите полученный двоичный файл. CentOS предоставляет инструкции по пересборке из исходного RPM. Кроме того, вы также можете загрузить и установить Percona XtraBackup из исходного кода.
CentOS (и RHEL) вроде ожидают, что все устанавливаемое вами программное обеспечение будет установлено с использованием пакетов RPM и yum. Если вы выйдете за рамки этого, вы рискуете больше не использовать RPM для программного обеспечения, связанного с вашими пользовательскими установками. Похоже, здесь дело обстоит именно так, потому что у вас не только нет подходящей версии perl-DBD-mysql, но у вас также есть PHP, связанный с более новой версией MySQL.