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

// Декабрь 15th, 2010 // Highload, MySQL, Веб-разработка

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

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

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

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

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

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

aptitude search mysql | grep ^i

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

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

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

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

 sudo apt-get install -y pwgen

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

 pwgen 16 1
 sudo gpg --keyserver  hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A

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

sudo "deb http://repo.percona.com/apt-rc maverick main" >> /etc/apt/sources.list
sudo "deb-src http://repo.percona.com/apt-rc maverick main" >> /etc/apt/sources.list

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

sudo apt-get update
sudo gpg -a --export CD2EFD2A | apt-key add -
sudo apt-get update

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

 sudo apt-get install percona-server-server percona-server-client

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

 mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.1.52-rel12.3 (Percona Server (GPL), 12.3 , Revision 159)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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

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

#
# * HandlerSocket
#

loose_handlersocket_port = 9998
# the port number to bind to for read requests
loose_handlersocket_port_wr = 9999
# the port number to bind to for write requests
loose_handlersocket_threads = 16
# the number of worker threads for read requests
loose_handlersocket_threads_wr = 1
# the number of worker threads for write requests
open_files_limit = 65535
# to allow handlersocket to accept many concurrent
# connections, make open_files_limit as large as
# possible.

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

mysql> install plugin handlersocket soname 'handlersocket.so';
Query OK, 0 rows affected (0,02 sec)

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

 mysql>show plugins;
+--------------------------------+----------+--------------------
| Name                           | Status   | Type
+--------------------------------+----------+--------------------
| binlog                         | ACTIVE   | STORAGE ENGINE
...
| MyISAM                         | ACTIVE   | STORAGE ENGINE
| handlersocket                  | ACTIVE   | DAEMON
+--------------------------------+----------+--------------------
29 rows in set (0,00 sec)

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

 sudo apt-get install chkconfig

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

 sudo chkconfig --list mysql

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

 mysqld          0:off 1:off 2:off 3:off    4:off    5:off  6:off

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

 sudo chkconfig mysql on

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

sudo service mysql stop
sudo service mysql start

Всё! 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/




coded by nessus
Percona Установка




Смотрите также:

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


41 Responses to “Установка и настройка HandlerSocket и Percona Server в Ubuntu 10.10 из пакетов”

  1. Percona server Oleg:

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

    • Установка percona server google.com Андрей Токарчук:

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

      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, как в мануале (я недавно обновил)?

      • Percona server Daniil:

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

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

        • Handlersocket plugin google.com Андрей Токарчук:

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

          • Percona Установка Daniil:

            Спасибо!

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

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

          • Percona ubuntu google.com Андрей Токарчук:

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

          • Percona server Daniil:

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

            И вообще aptitude > yum ;)

          • Percona handlersocket google.com Андрей Токарчук:

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

  2. Percona Oleg:

    по-моему, кусок текста съело

  3. Percona server Oleg:

    Да, это листинг пакетов, причем сервер помечен 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 чтобы они не конфликтовали. Для тех кто на бронепоезде, так сказать. Спасибо

    • Handlersocket mysql sql google.com Андрей Токарчук:

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

      • Установка percona server Oleg:

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

  4. Handlersocket plugin jes:

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

  5. [...] времени прошлого поста прошло много времени, расширение php-handlersocket успело [...]

  6. Percona server Sergey:

    Все сделал как описано.
    После перезагрузки сервера mysql в логе ошибок
    stack_bottom = (nil) thread_stack 0×20000
    /usr/sbin/mysqld(my_print_stacktrace+0×21)[0x84d3a71]
    /usr/sbin/mysqld(handle_segfault+0×474)[0x81f58f4]
    /lib/libpthread.so.0(+0xdff8)[0xb7f71ff8]
    /lib/libc.so.6(abort+0×182)[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+0×379)[0x81f8a29]
    /lib/libc.so.6(__libc_start_main+0xe6)[0xb7d95bc6]
    /usr/sbin/mysqld[0x8142001]

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

  7. Percona server ubuntu webstyle:

    У меня не ставится 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, но не помогло(

    • Percona ubuntu google.com Андрей Токарчук:

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

  8. Percona server webstyle:

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

  9. Percona webstyle:

    Теперь такая ошибка при сборке 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

  10. [...] Установка и настройка HandlerSocket в Ubuntu [...]

  11. Percona ubuntu AlexRsk:

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

  12. Percona Установка AlexRsk:

    Печалько…:
    Распаковывается пакет 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

    • Установка percona server AlexRsk:

      это после apt-get -f install

      • Percona server google.com Андрей Токарчук:

        Кажется у меня такое было, посмотрите мою статью: http://tokarchuk.ru/2011/04/percona-server-5-1-to-5-5-upgrad/

        • Ubuntu handlersocket AlexRsk:

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

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

          • Percona server ubuntu google.com Андрей Токарчук:

            Вот так вот:

            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

  13. Percona ubuntu Igor:

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

  14. Percona server Php5-Mysql Андрей:

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

    А подскажите как поставить на 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

    • PHP handlersocket google.com Андрей Токарчук:

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

      • Установка percona server Андрей:

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

      • Percona server Андрей:

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

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

Комментировать