Снова поднимаю вопрос установки pinba_engine-1.0.0 и Percona Server 5.5.34-32.0-log

354 views
Skip to first unread message

Vladislav Churakov

unread,
Oct 31, 2013, 9:12:06 AM10/31/13
to pinba-e...@googlegroups.com
Всех приветствую.

Debian 7.2

Стоит Percona 5.5.34 из оф. репозитария, начал ставить pinba-engine-mysql-5.5, в зависимостях висит mysql-server-core-5.5:
apt-get install pinba-engine-mysql-5.5
...
The following extra packages will be installed:
  mysql-server-core-5.5
The following packages will be REMOVED:
  percona-server-server-5.5
The following NEW packages will be installed:
  mysql-server-core-5.5 pinba-engine-mysql-5.5

стал собирать ручками:

cat /etc/apt/sources.list.d/percona.sources.list
# official percona repo
deb http://repo.percona.com/apt wheezy main
deb-src http://repo.percona.com/apt wheezy main
...
cd /tmp
apt-get sources percona-server-server-5.5
# исходники percona из репозитария (обратил внимание версия 5.5.33)
wget http://pinba.org/files/pinba_engine-1.0.0.tar.gz && tar -xvf pinba_engine-1.0.0.tar.gz
cd ./percona-server-*/BUILD && ./autorun.sh
cd ..
mysqlbug
# на счет последней есть сомнения (ненагуглил по данному вопросу для percona)
# получил:
./configure -v --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checkin
cd  ./include && make
# все теперь у меня mysql_version.h
cd ../../pinba_engine-1.0.0/
./configure --with-mysql=/tmp/percona-server-5.5-5.5.33-rel31.1 --libdir=/usr/lib/mysql/plugin
make && make install

# все проходит без ошибок, файлы плагина появляются:
ls /usr/lib/mysql/plugin/libpin*
/usr/lib/mysql/plugin/libpinba_engine.a   /usr/lib/mysql/plugin/libpinba_engine.so    /usr/lib/mysql/plugin/libpinba_engine.so.0.0.0 /usr/lib/mysql/plugin/libpinba_engine.la  /usr/lib/mysql/plugin/libpinba_engine.so.0

mysql
INSTALL PLUGIN pinba SONAME 'libpinba_engine.so';
и получаю:
ERROR 1126 (HY000): Can't open shared library 'libpinba_engine.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)

Что пробовал:
1. pinba_engine-0.6.0, вываливается по ошибке ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/libpinba_engine.so' (errno: 2 /usr/lib/mysql/plugin/libpinba_engine.so: undefined symbol: _db_enter_)
2. пробовал полностью собирать percona-у из исходников, изменений не было: ошибка про различие версий API
3. собирал с mysql-5.5 - работает, но у нас на всех серверах percona (есть свои заморочки)

Тащить на каждой машине по 2 инстанса, один percona, второй mysql - не хочется...

Куда рыть? что копать? Заранее спасибо!

Antony Dovgal

unread,
Oct 31, 2013, 10:02:37 AM10/31/13
to pinba-e...@googlegroups.com
Добрый день.

On 2013-10-31 17:12, Vladislav Churakov wrote:
> cd ./percona-server-*/BUILD && ./autorun.sh
> ./configure -v --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checkin

Разве в Перконе не перешли на cmake тоже?
Насколько я знаю, сейчас MySQL перешел на сборку cmake (чем еще более усложнил и без того сложный процесс сборки плугина).

> cd ./include && make
> # все теперь у меня mysql_version.h

Стоп.
Т.е. сам сервер всё-таки их (из RPM или их тарболла), а исходники вы сконфигурили только для сборки, я правильно понял?

В соседних тредах уже выяснили, что Percona собирает с какими-то дополнительными флагами, поэтому
если вы соберете их SRPM или исходники с их _декларируемыми_ опциями, то вы НЕ получите бинарник, идентичный официальному.


Проще всего - собрать самому собственно сервер и использовать именно этот собранный бинарник.
Еще проще - не связываться с Перконой вообще, т.к. Пинба всё равно предполагается как отдельный сервис
и все перконовские оптимизации к ней отношение имеют чуть более, чем косвенное.

Есть сложный путь - попробовать "поиграться" с флагами.
В частности, в прошлый раз обнаружили, что они включили WITH_FAST_MUTEXES, причем эта опция передается не через заголовки, а через CFLAGS (привет от cmake!).

> Тащить на каждой машине по 2 инстанса, один percona, второй mysql - не хочется...

А мне кажется, наоборот так лучше: мухи отдельно, котлеты - отдельно.

--
Wbr,
Antony Dovgal
---
http://pinba.org - realtime profiling for PHP

Илья Антипов

unread,
Oct 31, 2013, 10:10:00 AM10/31/13
to pinba-e...@googlegroups.com
Если собирать не с теми флагами - ошибка другая, т.е. so грузится, но не работает. Здесь 
ERROR 1126 (HY000): Can't open shared library 'libpinba_engine.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)

Если я правильно понимаю, то собирается не под ту версию mysql вообще с использованием старой версии API. Посмотрите нет ли у Вас в других путях заголовков. Я здесь писал про свои грабли - возможно поможет.

https://groups.google.com/d/msg/pinba-engine-ru/mQDa18eup-c/ChhEPkP02-wJ


31 октября 2013 г., 18:02 пользователь Antony Dovgal <antony...@gmail.com> написал:


--
You received this message because you are subscribed to the Google Groups "Pinba Engine development list (in Russian)" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pinba-engine-ru+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
С уважением,
Антипов Илья

Vladislav Churakov

unread,
Oct 31, 2013, 2:02:39 PM10/31/13
to pinba-e...@googlegroups.com


четверг, 31 октября 2013 г., 18:02:37 UTC+4 пользователь tony2001 написал:
Добрый день.

On 2013-10-31 17:12, Vladislav Churakov wrote:
Разве в Перконе не перешли на cmake тоже?
Насколько я знаю, сейчас MySQL перешел на сборку cmake (чем еще более усложнил и без того сложный процесс сборки плугина).
Да, там скажем так "фейковый" configuration, который на перле написан, он из переданных аргументов собирает строку флагов для cmake и потом my $rc = system("cmake $srcdir $cmakeargs");
Метод сборки рабочий.

четверг, 31 октября 2013 г., 18:02:37 UTC+4 пользователь tony2001 написал:
Стоп.
Т.е. сам сервер всё-таки их (из RPM или их тарболла), а исходники вы сконфигурили только для сборки, я правильно понял?
не RPM, у нас дебиан, сорцы из официального репозитария percona, я же писал как их получил: apt-get sources percona-server-server-5.5, но он не содержит mysql_version.h чтобы его получить приходится сделать пару телодвижений (в логе в первом сообщение есть последовательность выполняемых комманд, кстати данный метод описан для mysql в оф.документации pinba для ubuntu)

четверг, 31 октября 2013 г., 18:02:37 UTC+4 пользователь tony2001 написал:
В соседних тредах уже выяснили, что Percona собирает с какими-то дополнительными флагами, поэтому
если вы соберете их SRPM или исходники с их _декларируемыми_ опциями, то вы НЕ получите бинарник, идентичный официальному.
да в debian и ubuntu ситуация похожая, как минимум в расхождение версий исходников (5.5.33) и бинарников (5.5.34)

четверг, 31 октября 2013 г., 18:02:37 UTC+4 пользователь tony2001 написал:
Проще всего - собрать самому собственно сервер и использовать именно этот собранный бинарник.
 Дело в том что я ловлю ошибку несоответствия версий API и для бинарника полученного из репозитария и для собранного самим, ошибка меняется только если я беру pinba_engine-0.6.0


Vladislav Churakov

unread,
Oct 31, 2013, 2:05:58 PM10/31/13
to pinba-e...@googlegroups.com


четверг, 31 октября 2013 г., 18:10:00 UTC+4 пользователь Илья Антипов написал:
Если собирать не с теми флагами - ошибка другая, т.е. so грузится, но не работает. Здесь 
ERROR 1126 (HY000): Can't open shared library 'libpinba_engine.so' (errno: 0 API version for STORAGE ENGINE plugin is too different)

Если я правильно понимаю, то собирается не под ту версию mysql вообще с использованием старой версии API. Посмотрите нет ли у Вас в других путях заголовков. Я здесь писал про свои грабли - возможно поможет.

https://groups.google.com/d/msg/pinba-engine-ru/mQDa18eup-c/ChhEPkP02-wJ

Да я все Ваши посты видел, независимо от флагов, для pinba_engine-0.6.0 ошибка постоянно одна

ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/libpinba_engine.so' (errno: 2 /usr/lib/mysql/plugin/libpinba_engine.so: undefined symbol: _db_enter_)
а для pinba_engine-1.0.0 постоянно другая

Antony Dovgal

unread,
Oct 31, 2013, 3:23:48 PM10/31/13
to pinba-e...@googlegroups.com
On 2013-10-31 22:02, Vladislav Churakov wrote:
> Да, там скажем так "фейковый" configuration, который на перле написан, он из переданных аргументов собирает строку флагов для cmake и потом my $rc = system("cmake $srcdir $cmakeargs");
> Метод сборки рабочий.

Ох.

> не RPM, у нас дебиан, сорцы из официального репозитария percona,

Сорцы понятно. А бинарник вы сами собирали?

> Проще всего - собрать самому собственно сервер и использовать именно этот собранный бинарник.
>
> Дело в том что я ловлю ошибку несоответствия версий API и для бинарника полученного из репозитария и для собранного самим,

Т.е. вы берете исходники, собираете сами MySQL из них, потом те же исходники используете для сборки пинбы и у вас не работает.
Так?

Подтвердите, плз, и я буду пробовать воспроизвести.

Vladislav Churakov

unread,
Nov 1, 2013, 12:27:33 AM11/1/13
to pinba-e...@googlegroups.com


четверг, 31 октября 2013 г., 23:23:48 UTC+4 пользователь tony2001 написал:
Т.е. вы берете исходники, собираете сами MySQL из них, потом те же исходники используете для сборки пинбы и у вас не работает.
Так?

Подтвердите, плз, и я буду пробовать воспроизвести.

Да именно так, беру бинарники из репозитария (5.5.34), беру оттуда исходники (5.5.33), собираю версию 1.0.0 - получаю ошибку про версию API, собираю percon-у из исходников репозитария (5.5.33) - та-же ошибка. Если пытаться собирать версию 0.6.0 то все в точности так, кроме ошибки, теперь она становится ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/
libpinba_engine.so' (errno: 2 /usr/lib/mysql/plugin/libpinba_engine.so: undefined symbol: _db_enter_)

1. Не экспериментировал с флагами сборки percona, по простой причине - ошибка в несоответствии версий.
2. Файлов mysql_version.h до скачивания исходников в системе был 1 в /usr/include/mysql_version.h, тот-же файл полученный в исходниках версии 5.5.33 ничем не отличается от того, что есть в системе

Antony Dovgal

unread,
Nov 1, 2013, 3:02:35 AM11/1/13
to pinba-e...@googlegroups.com
On 2013-11-01 08:27, Vladislav Churakov wrote:
>
>
> четверг, 31 октября 2013 г., 23:23:48 UTC+4 пользователь tony2001 написал:
>
> Т.е. вы берете исходники, собираете сами MySQL из них, потом те же исходники используете для сборки пинбы и у вас не работает.
> Так?
>
> Подтвердите, плз, и я буду пробовать воспроизвести.
>
>
> Да именно так, беру бинарники из репозитария (5.5.34)

Извините, что пятый раз переспрашиваю, но я спросил: вы бинарники MySQL вы сами собираете из исходников?
Вы отвечаете "Да именно так, беру бинарники из репозитария (5.5.34)".
Я не знаю как это понять.

Vladislav Churakov

unread,
Nov 1, 2013, 7:32:46 AM11/1/13
to pinba-e...@googlegroups.com
 Я еще в первом сообщение написал: пробовал полностью собирать percona-у из исходников, изменений не было: так-же была ошибка про различие версий API

Ошибка есть и при сборке самостоятельно и при использование готовых бинарников.
Если собираешь сам то исходники доступны версии 5.5.33, если брать бинарник то версия 5.5.34
исходники из репозитария http://repo.percona.com/apt

пятница, 1 ноября 2013 г., 11:02:35 UTC+4 пользователь tony2001 написал:

Antony Dovgal

unread,
Nov 1, 2013, 10:24:11 AM11/1/13
to pinba-e...@googlegroups.com
On 2013-11-01 15:32, Vladislav Churakov wrote:
> Я еще в первом сообщение написал: пробовал полностью собирать percona-у из исходников, изменений не было: так-же была ошибка про различие версий API
>
> Ошибка есть и при сборке самостоятельно и при использование готовых бинарников.
> Если собираешь сам то исходники доступны версии 5.5.33, если брать бинарник то версия 5.5.34
> исходники из репозитария http://repo.percona.com/apt


Я попробовал на Percona-Server-5.5.34-rel32.0.tar.gz
На простом cmake . -DCMAKE_INSTALL_PREFIX=/local/percona && make install всё работает.
Пинба собирается, подключается и пр.

Теперь вместо простого cmake . выполнил вашу команду с небольшими правками:

Ваш вариант: ./configure -v --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checkin

Мой: ./configure -v --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/local/percona --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checkin
(я поменял только пути).

Удалил предыдущие бинарники, заново собрал и поставил.
Всё равно подключается, работает, пакеты принимает и разбирает.

Проверьте еще раз, что у вас в системе нет заголовков другого MySQL. Если есть - удалите.
Или попробуйте собрать на другой системе, где их нет.

Vladislav Churakov

unread,
Nov 1, 2013, 3:27:51 PM11/1/13
to pinba-e...@googlegroups.com
Попробовал взять Percona-Server-5.5.34-rel32.0.tar.gz  с http://www.percona.com/downloads/Percona-Server-5.5/LATEST/release-5.5.34-32.0/591/source/
И действительно с ними собирается, работает и ошибок нет

А вот если взять исходники percona-server-5.5-5.5.33-rel31.1.wheezy.tar.gz которые скачиваются через aptitude из репозитария percona http://repo.percona.com/apt то все повторяется по сценарию мною описанному, ошибка с версиями API

Спасибо за помощь, надеюсь ветка будет полезна всем кто на дебиане собирает используя исходники полученные через apt-get sources - НЕИСПОЛЬЗУЙТЕ, качайте напрямую с http://www.percona.com/downloads/Percona-Server-5.5/LATEST/

пятница, 1 ноября 2013 г., 18:24:11 UTC+4 пользователь tony2001 написал:

Antony Dovgal

unread,
Nov 5, 2013, 9:43:57 AM11/5/13
to pinba-e...@googlegroups.com
On 2013-11-01 23:27, Vladislav Churakov wrote:
> Попробовал взять Percona-Server-5.5.34-rel32.0.tar.gz <http://www.percona.com/redir/downloads/Percona-Server-5.5/LATEST/release-5.5.34-32.0/591/source/Percona-Server-5.5.34-rel32.0.tar.gz> с http://www.percona.com/downloads/Percona-Server-5.5/LATEST/release-5.5.34-32.0/591/source/
> И действительно с ними собирается, работает и ошибок нет
>
> А вот если взять исходники percona-server-5.5-5.5.33-rel31.1.wheezy.tar.gz которые скачиваются через aptitude из репозитария percona http://repo.percona.com/apt то все повторяется по сценарию мною описанному, ошибка с версиями API

Искал вот тут: http://repo.percona.com/apt/pool/main/p/percona-server-5.5/
Такого архива не нашел: percona-server-5.5-5.5.33-rel31.1.wheezy.tar.gz
Нашел только такой: percona-server-5.5_5.5.33-rel31.1-568.wheezy.tar.gz

С ним тоже работает =(

Может, выложите куда-то нерабочий архив?
Хочется уже понять в чем проблема была, чтобы знать на будущее.

cvat cvat

unread,
May 13, 2015, 10:26:43 AM5/13/15
to pinba-e...@googlegroups.com
Вот пример:
Cflags тоже надо включать из mysqlbug. 

./configure -v --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu CC='/usr/bin/x86_64-linux-gnu-gcc-4.7'  CFLAGS='-O2 -g -fno-strict-aliasing -fPIC  -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1'  CXX='/usr/bin/x86_64-linux-gnu-g++-4.7' CXXFLAGS='-O3 -g -felide-constructors -fno-exceptions -fno-rtti -fno-strict-aliasing  -fPIC  -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1'  LDFLAGS=''  ASFLAGS=''"


четверг, 31 октября 2013 г., 16:12:06 UTC+3 пользователь Vladislav Churakov написал:
Reply all
Reply to author
Forward
0 new messages