Назад | Перейти на главную страницу

установка XtraBackup с libmysqlclient.so.18

Текущая ситуация

Я хочу установить 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).

У вас есть несколько вариантов:

  1. Если Percona Server установлен через RPM:
    Установите RPM Percona-Server-shared-compat из репозиториев Percona

  2. Если более новая версия MySQL установлена ​​через RPM:
    Попробуйте найти библиотеку совместимости, аналогичную той, что вы делали в CentOS 6.

  3. Если более новая версия MySQL установлена ​​вручную:
    Перекомпилируйте исходный RPM-пакет perl-DBD-mysql в системе с файлом libmysqlclient.so.18 и соответствующими заголовками разработки, а затем установите полученный двоичный файл. CentOS предоставляет инструкции по пересборке из исходного RPM. Кроме того, вы также можете загрузить и установить Percona XtraBackup из исходного кода.

CentOS (и RHEL) вроде ожидают, что все устанавливаемое вами программное обеспечение будет установлено с использованием пакетов RPM и yum. Если вы выйдете за рамки этого, вы рискуете больше не использовать RPM для программного обеспечения, связанного с вашими пользовательскими установками. Похоже, здесь дело обстоит именно так, потому что у вас не только нет подходящей версии perl-DBD-mysql, но у вас также есть PHP, связанный с более новой версией MySQL.