Установка и настройка HandlerSocket и Percona Server в Ubuntu 10.10 из пакетов

В одной из прошлых заметок я писал о плагине к MySQL Handler Socket, и о том, каких результатов можно добаться применяя его. Сейчас модно юзать NoSQL базы, хотя MySQL на порядок быстрее их (вместе с этим плагином) он, по результатам тестов, оказался даже быстрее Memcached! Да и вообще заманчиво использовать NoSQL-решение (HandlerSocket), хранить всё в той же базе, и значительно выигрывать по скорости. Обзорную статью про него я ещё напишу, а пока расскажу, как его можно установить.

Итак есть два варианта:

  1. Скомпилировать его и установить к обычному MySQL.
  2. Поставить Percona Server с уже установленным HandlerSocket plugin.

Вчера вышла новая версия Percona 5.1.52-12.3, в которой есть встроенный HandlerSocket, и просто грех этим не воспользоваться. Итак, готовый рецепт такой.

Подготовка к установке

Смотрим, что есть по MySQL в системе;

Первым делом надо удалить обычный MySQL.

Установка из пакетов

Для начала ставим генератор паролей:

И сгенерируем устойчивый пароль для MySQL:

Добавляем две строки в /etc/apt/sources.list

И обновляем пакеты:

Ставим пакеты:

Тестируем соединение:

Отлично, теперь ставим HandlerSocket.

Добавляем в конфиг /etc/mysql/my.cnf в секцию [mysqld] следующие строки:

В консоли клиента mysql выполняем команду:

И проверяем его установику:

Дальше для удобства, сделаем так, чтобы утилита service понимала mysql.

Посмотрим есть, ли настройки для mysql(percona)

Будет что-то вроде этого:

Включаем percona(mysql) в service:

Всё, теперь Percona Server можно запускать и останавливать вот этими командами:

Всё! HandlerSocket установлен!

UPD. HandlerSocket работает на портах 9999, 9998 БЕЗ АВТОРИЗАЦИИ. Не забывайте об этом на продакшене!

UPD. В пакетах percona-server-5.1 для lucid (ubuntu 10.04) amd64 не плагинов, в частности плагина handlersocket.so.

Ссылки

https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-en/protocol.en.txt

http://code.google.com/p/php-handlersocket/

44 Comments

  1. Отличный мануал. А как вы подружили php5-mysql c Percona? Apt не желает их видеть вместе

    1. Спасибо, Олег)
      Да, подружил, вот пакеты:

      andrey@vaio:~$ aptitude search php5-mysql | grep ^i
      i php5-mysql – MySQL module for php5
      andrey@vaio:~$ aptitude search percona | grep ^i
      i percona-server-client – Percona Server database client (metapackag
      iB percona-server-client-5.1 – Percona Server database client binaries
      i percona-server-common – Percona Server database common files (e.g.
      iB percona-server-server – Percona Server database server (metapackag
      id percona-server-server-5.1 – Percona Server database server binaries
      andrey@vaio:~$

      А вы перед этим полностью удалили mysql, как в мануале (я недавно обновил)?

      1. Я извиняюсь за некрофилию, но столкнулся с той же проблемой – так в какой же последовательности ставить?

        MySQL на сервере не было в помине, поставил сначала перкону, потом php-fpm, после установить php-mysql не удалось..

        1. Сначалва ставите сервера, потом клиенты. Т.е. Сначала Percona, потом php-fpm, потом php-mysql. А почему не ставится, чего пишет?

          1. Спасибо!

            Вообще, я пытался всё это сделать на Fedora, она плевалась ошибками депендсов.

            На убунте завелось как-надо с первого раза.

          2. Вот именно поэтому я предпочитаю ubuntu. Если проблема случилась, то вероятность, что с ней сталкнулся кто-то на убунте больше, чем на других ОС. А следовательно и выше вероятность наличия багфикса 🙂

          3. Да, после последних экспериментов с Ubuntu, думаю переходить на нее. Fedora тоже достаточно распространенный дистрибутив, но информации на порядок меньше. Сейчас на продакшене стоит федора (я извращенец?) – попаболи много было.

            И вообще aptitude > yum 😉

          4. Полностью согалсен. Раньше сервера тоже на Fedora Code крутились. Но мне dev (apt, aptitude) как то больше нарвится чем rpm(yum и т.д.). Debian-системы как-то больше импонируют.

  2. Да, это листинг пакетов, причем сервер помечен broken и delete.
    По данному мануалу в результате получается вот что –
    web01:~# aptitude search php5-mysql | grep ^i
    web01:~# aptitude search percona | grep ^i
    i percona-server-client – Percona Server database client (metapackag
    i A percona-server-client-5.1 – Percona Server database client binaries
    i A percona-server-common – Percona Server database common files (e.g.
    i percona-server-server – Percona Server database server (metapackag
    i A percona-server-server-5.1 – Percona Server database server binaries

    Интересует именно КАК вы подружили php5-mysql c Percona чтобы они не конфликтовали. Для тех кто на бронепоезде, так сказать. Спасибо

    1. А что выводит sudo apt-get install php5-fpm?
      Какой был порядок установки, сначала php5-rpm или percona-server-server percona-server-client?

      1. На сервере – LAMP. Удалил полностью MySQL, он прихватил php5-mysql.so тоже. И после установки Percona, обратно не ставится из-за конфликтов. Это моя локальная проблема вида кривых рук?

        1. Если дадите ssh могу посмотреть, чего там такое. Пишите на мыло.

  3. спасибо за статью, все поставилось … а где можно поискать ещё инфу по настройке и её оптимизации на простых примерах .. а то на офиц. сайте ничего нет толкового

  4. Все сделал как описано.
    После перезагрузки сервера mysql в логе ошибок
    stack_bottom = (nil) thread_stack 0x20000
    /usr/sbin/mysqld(my_print_stacktrace+0x21)[0x84d3a71]
    /usr/sbin/mysqld(handle_segfault+0x474)[0x81f58f4]
    /lib/libpthread.so.0(+0xdff8)[0xb7f71ff8]
    /lib/libc.so.6(abort+0x182)[0xb7dacab2]
    /usr/lib/mysql/plugin/handlersocket.so(+0x1761b)[0xb5abc61b]
    /usr/lib/mysql/plugin/handlersocket.so(_ZN4dena8hstcpsvr12start_listenEv+0x2c4)[0xb5ab8b64]
    /usr/lib/mysql/plugin/handlersocket.so(+0xd7a9)[0xb5ab27a9]
    /usr/sbin/mysqld[0x835fc64]
    /usr/sbin/mysqld(_Z11plugin_initPiPPci+0x6bc)[0x8361d5c]
    /usr/sbin/mysqld[0x81f5fcf]
    /usr/sbin/mysqld(main+0x379)[0x81f8a29]
    /lib/libc.so.6(__libc_start_main+0xe6)[0xb7d95bc6]
    /usr/sbin/mysqld[0x8142001]

    Как мне установить percona и handlesocket – помогите

    1. Давайте по скайпу, чтобы здесь чат не устраивать. Стучитесь, ок?

  5. У меня не ставится handleroscket, запарывается в этом месте:
    mysql> install plugin handlersocket soname ‘handlersocket.so’;
    с ошибкой:
    ERROR 1126 (HY000): Can’t open shared library ‘/usr/lib/mysql/plugin/handlersocket.so’ (errno: 2 failed to map segment from shared object: Permission denied)

    Пробовал отключать apparmor, но не помогло(

    1. Так а у юзера mysql есть доступ на чтение к этому файлу, и к родительской папке?

  6. Спс, с этим я разобрался. Теперь возникает другая трудность:
    при установке php-handlersocket 0.1.0 выдает:
    configure: error: Can’t find hsclient headers
    Я так понял он не может найти файл заголовком, а где он лежит не знаю и есть ли он вообще? потому что по вашшей ссылке качается rpm со скомпилированным бинарником внутри.

  7. Теперь такая ошибка при сборке php-handlersocket:

    /bin/bash /home/webstyle/Downloads/php-handlersocket/libtool –mode=link cc -DPHP_ATOM_INC -I/home/webstyle/Downloads/php-handlersocket/include -I/home/webstyle/Downloads/php-handlersocket/main -I/home/webstyle/Downloads/php-handlersocket -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -I/home/webstyle/Downloads/hsclient/libhsclient -DHAVE_CONFIG_H -g -O2 -o handlersocket.la -export-dynamic -avoid-version -prefer-pic -module -rpath /home/webstyle/Downloads/php-handlersocket/modules handlersocket.lo -lstdc++ -Wl,-rpath,/home/webstyle/Downloads/hsclient/libhsclient/lib -L/home/webstyle/Downloads/hsclient/libhsclient/lib -lhsclient
    libtool: link: cc -shared .libs/handlersocket.o -lstdc++ -L/home/webstyle/Downloads/hsclient/libhsclient/lib -lhsclient -Wl,-rpath -Wl,/home/webstyle/Downloads/hsclient/libhsclient/lib -Wl,-soname -Wl,handlersocket.so -o .libs/handlersocket.so
    /usr/bin/ld: cannot find -lhsclient
    collect2: ld returned 1 exit status
    make: *** [handlersocket.la] Ошибка 1

  8. dpkg: не удалось обработать параметр /var/cache/apt/archives/percona-server-server-5.5_5.5.13-rel20.4-136.maverick_i386.deb (–unpack):

  9. Печалько…:
    Распаковывается пакет percona-server-server-5.5 (из файла …/percona-server-server-5.5_5.5.13-rel20.4-136.maverick_i386.deb)…
    Aborting downgrade from (at least) 5.5 to 5.1.
    If are sure you want to downgrade to 5.1, remove the file
    /var/lib/mysql/debian-*.flag and try installing again.
    dpkg: не удалось обработать параметр /var/cache/apt/archives/percona-server-server-5.5_5.5.13-rel20.4-136.maverick_i386.deb (–unpack):
    подпроцесс новый сценарий pre-installation возвратил код ошибки 1
    Отчёты apport не записаны, так достигнут MaxReports
    При обработке следующих пакетов произошли ошибки:
    /var/cache/apt/archives/percona-server-server-5.5_5.5.13-rel20.4-136.maverick_i386.deb

        1. По ней всё и делалось ((

          Подскажите пожалуйста, как удалить всё под корень.
          Сам я с линуксом на ВЫ.

          1. Вот так вот:

            sudo apt-get remove libmysqlclient16 libmysqlclient-dev
            sudo apt-get purge percona-server-client percona-server-server percona-server-common

            Этой командой смотрим, что есть
            aptitude search mysql | grep ^i
            и удаляем пакеты, пока ничего не останется.

            sudo apt-get remove mysql-server mysql-client
            sudo apt-get purge mysql-client-core-5.1
            sudo apt-get purge mysql-server-core-5.1

            mv /etc/mysql/my.cnf /etc/mysql/my.cnf.old

  10. Андей, спасибо за мануал.
    Пробовал HS в Percona и MariaDB через telnet.
    Команда find игнорирует операции сравнения с индексом.
    Вы не сталкивались с таким багом?

      1. Да, читал. Решения не нашел.
        Я создал таблицу с полем INT, добавил значения 1,2,3.
        Задаю 0 = 1 1 10 0, получаю значение 1.
        Задаю 0 >= 1 1 10 0, опять получаю значение 1.

  11. Здравствуйте.

    А подскажите как поставить на Ubuntu 11.04. Репозитория на сайте у них не нашел. А версия для 10.10 не подходит вылетает ошибка при apt-get update

    Ош http://repo.percona.com maverick/main Sources
    404 Not Found
    Ош http://repo.percona.com maverick/main i386 Packages
    404 Not Found

    1. Да, для natty (11.04) у них репозитариев нет. Вариант один, брать исходники с github, компилить его с исходниками вашей версии mysql, и устанавливать. Мне это правда так и не удалось. Целью было получить рабочий сервер бд с XtraDB(MariaDB/Percona)+HandlerSocket+SphinxSE. Однако либо HS не компилился с Maria, либо Sphinx с Percona.

      1. Досадно. На форуме тоже ни чего не нашел. Странно как-то 11.04 долгоиграющий релиз, а они на него забили.

      2. Появился репозиторий для 11.04, вернее написано что ставьте maverick (и адреса немного поменяли). Я попробовал все установилось без ошибок, но почему то в /etc/mysql нет файла /etc/mysql/my.cnf

        Это нормально?

  12. Добрый вечер!

    Пытаюсь установить плагин на MariaDB
    install plugin handlersocket soname ‘handlersocket.so’;

    ERROR 1126 (HY000): Can’t open shared library ‘/usr/lib/mysql/plugin/handlersocket.so’ (errno: 2, undefined symbol: _ZN4Item9transformEMS_FPS_PhES1_)

    что это за ошибка? как мне ее исправить? заранее благодарен!

    1. Доброй ночи! На ум приходит только вариант попробовать другую версию…

Leave a Comment