Установка и настройка HandlerSocket и Percona Server в Ubuntu 10.10 из пакетов
В одной из прошлых заметок я писал о плагине к MySQL Handler Socket, и о том, каких результатов можно добаться применяя его. Сейчас модно юзать NoSQL базы, хотя MySQL на порядок быстрее их (вместе с этим плагином) он, по результатам тестов, оказался даже быстрее Memcached! Да и вообще заманчиво использовать NoSQL-решение (HandlerSocket), хранить всё в той же базе, и значительно выигрывать по скорости. Обзорную статью про него я ещё напишу, а пока расскажу, как его можно установить.
Итак есть два варианта:
- Скомпилировать его и установить к обычному MySQL.
- Поставить Percona Server с уже установленным HandlerSocket plugin.
Вчера вышла новая версия Percona 5.1.52-12.3, в которой есть встроенный HandlerSocket, и просто грех этим не воспользоваться. Итак, готовый рецепт такой.
Подготовка к установке
Смотрим, что есть по MySQL в системе;
1 |
aptitude search mysql | grep ^i |
Первым делом надо удалить обычный MySQL.
1 2 3 |
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 |
Установка из пакетов
Для начала ставим генератор паролей:
1 |
sudo apt-get install -y pwgen |
И сгенерируем устойчивый пароль для MySQL:
1 |
pwgen 16 1 |
1 |
sudo gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A |
Добавляем две строки в /etc/apt/sources.list
1 2 |
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 |
И обновляем пакеты:
1 2 3 |
sudo apt-get update sudo gpg -a --export CD2EFD2A | apt-key add - sudo apt-get update |
Ставим пакеты:
1 |
sudo apt-get install percona-server-server percona-server-client |
Тестируем соединение:
1 2 3 4 5 6 7 8 9 10 11 |
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] следующие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# # * 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 выполняем команду:
1 2 |
mysql> install plugin handlersocket soname 'handlersocket.so'; Query OK, 0 rows affected (0,02 sec) |
И проверяем его установику:
1 2 3 4 5 6 7 8 9 10 |
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.
1 |
sudo apt-get install chkconfig |
Посмотрим есть, ли настройки для mysql(percona)
1 |
sudo chkconfig --list mysql |
Будет что-то вроде этого:
1 |
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off |
Включаем percona(mysql) в service:
1 |
sudo chkconfig mysql on |
Всё, теперь Percona Server можно запускать и останавливать вот этими командами:
1 2 |
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
Отличный мануал. А как вы подружили php5-mysql c Percona? Apt не желает их видеть вместе
Спасибо, Олег)
Да, подружил, вот пакеты:
А вы перед этим полностью удалили mysql, как в мануале (я недавно обновил)?
Я извиняюсь за некрофилию, но столкнулся с той же проблемой – так в какой же последовательности ставить?
MySQL на сервере не было в помине, поставил сначала перкону, потом php-fpm, после установить php-mysql не удалось..
Сначалва ставите сервера, потом клиенты. Т.е. Сначала Percona, потом php-fpm, потом php-mysql. А почему не ставится, чего пишет?
Спасибо!
Вообще, я пытался всё это сделать на Fedora, она плевалась ошибками депендсов.
На убунте завелось как-надо с первого раза.
Вот именно поэтому я предпочитаю ubuntu. Если проблема случилась, то вероятность, что с ней сталкнулся кто-то на убунте больше, чем на других ОС. А следовательно и выше вероятность наличия багфикса 🙂
Да, после последних экспериментов с Ubuntu, думаю переходить на нее. Fedora тоже достаточно распространенный дистрибутив, но информации на порядок меньше. Сейчас на продакшене стоит федора (я извращенец?) – попаболи много было.
И вообще aptitude > yum 😉
Полностью согалсен. Раньше сервера тоже на Fedora Code крутились. Но мне dev (apt, aptitude) как то больше нарвится чем rpm(yum и т.д.). Debian-системы как-то больше импонируют.
по-моему, кусок текста съело
Где съело? Вроде всё на месте.
Да, это листинг пакетов, причем сервер помечен 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 чтобы они не конфликтовали. Для тех кто на бронепоезде, так сказать. Спасибо
А что выводит sudo apt-get install php5-fpm?
Какой был порядок установки, сначала php5-rpm или percona-server-server percona-server-client?
На сервере – LAMP. Удалил полностью MySQL, он прихватил php5-mysql.so тоже. И после установки Percona, обратно не ставится из-за конфликтов. Это моя локальная проблема вида кривых рук?
Если дадите ssh могу посмотреть, чего там такое. Пишите на мыло.
спасибо за статью, все поставилось … а где можно поискать ещё инфу по настройке и её оптимизации на простых примерах .. а то на офиц. сайте ничего нет толкового
Пожалуйста, рад помочь! По оптимизации MySQL/Percona сможете найти инфу по этим ссылкам:
http://www.mysqlperformanceblog.com/
http://forum.percona.com/index.php/f/2/
http://groups.google.com/group/moscow-mysql-user-group?pli=1
Все сделал как описано.
После перезагрузки сервера 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 – помогите
Давайте по скайпу, чтобы здесь чат не устраивать. Стучитесь, ок?
У меня не ставится 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, но не помогло(
Так а у юзера mysql есть доступ на чтение к этому файлу, и к родительской папке?
Спс, с этим я разобрался. Теперь возникает другая трудность:
при установке php-handlersocket 0.1.0 выдает:
configure: error: Can’t find hsclient headers
Я так понял он не может найти файл заголовком, а где он лежит не знаю и есть ли он вообще? потому что по вашшей ссылке качается rpm со скомпилированным бинарником внутри.
Вот ссылочка на исходники: https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/archives/master
Я во второй статье написал более подробно. См. https://tokarchuk.ru/2011/01/install-php-handlersocket/
Теперь такая ошибка при сборке 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
dpkg: не удалось обработать параметр /var/cache/apt/archives/percona-server-server-5.5_5.5.13-rel20.4-136.maverick_i386.deb (–unpack):
sudo apt-get -f install
Печалько…:
Распаковывается пакет 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
это после apt-get -f install
Кажется у меня такое было, посмотрите мою статью: https://tokarchuk.ru/2011/04/percona-server-5-1-to-5-5-upgrad/
По ней всё и делалось ((
Подскажите пожалуйста, как удалить всё под корень.
Сам я с линуксом на ВЫ.
Вот так вот:
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
Андей, спасибо за мануал.
Пробовал HS в Percona и MariaDB через telnet.
Команда find игнорирует операции сравнения с индексом.
Вы не сталкивались с таким багом?
Пожалуйста!
А вы открывали перед этим индекс? На хабре хорошая статья есть.
Да, читал. Решения не нашел.
Я создал таблицу с полем INT, добавил значения 1,2,3.
Задаю 0 = 1 1 10 0, получаю значение 1.
Задаю 0 >= 1 1 10 0, опять получаю значение 1.
Я нашел ошибку, у меня Engine был memory
Отлично!
Здравствуйте.
А подскажите как поставить на 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
Да, для natty (11.04) у них репозитариев нет. Вариант один, брать исходники с github, компилить его с исходниками вашей версии mysql, и устанавливать. Мне это правда так и не удалось. Целью было получить рабочий сервер бд с XtraDB(MariaDB/Percona)+HandlerSocket+SphinxSE. Однако либо HS не компилился с Maria, либо Sphinx с Percona.
Досадно. На форуме тоже ни чего не нашел. Странно как-то 11.04 долгоиграющий релиз, а они на него забили.
Появился репозиторий для 11.04, вернее написано что ставьте maverick (и адреса немного поменяли). Я попробовал все установилось без ошибок, но почему то в /etc/mysql нет файла /etc/mysql/my.cnf
Это нормально?
Спасибо за пост. Когда я начинал изучать Percona Mysql я юзал этот набор инструкций – http://sysadm.pp.ua/linux/mysql-install.html . Может кому-то пригодиться.
Добрый вечер!
Пытаюсь установить плагин на 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_)
что это за ошибка? как мне ее исправить? заранее благодарен!
Доброй ночи! На ум приходит только вариант попробовать другую версию…