LINUX.ORG.RU
ФорумAdmin

[FreeBSDшникам] MySQL


0

0

Всем привет. Вопрос сугубо FreeBSDшникам: Можно ли каким-то образом на mysql-сервере получать статистику (по запросам, пользователям и прочему), которую реализует патчсет google (http://code.google.com/p/google-mysql-tools) или ребята с http://extsql.com/. А то при сборке к примеру первого я на любой версии FreeBSD получаю ошибки:

sql_parse.cc: In function 'void mysql_parse(THD*, char*, uint)': 
sql_parse.cc:7203: error: 'CLOCK_THREAD_CPUTIME_ID' was not declared in 
this scope 
sql_parse.cc:7309: error: 'CLOCK_THREAD_CPUTIME_ID' was not declared in 
this scope 
*** Error code 1 
Stop in /usr/mysqlfiles/mysql-5.0.37/sql. 
*** Error code 1 
Stop in /usr/mysqlfiles/mysql-5.0.37/sql. 
*** Error code 1 

На http://extsql.com о поддержке FreeBSD тоже никто не заявлял. В багзилле гугля этот Issue висит как Status: New уже долгое время. Неужели фря насколько ущербна? Кто что альтернативного подскажет, чтобы получать примерно такие ништяки:

SHOW STATISTICS Com_select, Com_insert, Questions FROM user;
+----------+-------------+------------+------------+
| user     | Com_select  | Com_insert | Questions  |
+----------+-------------+------------+------------+
| bandala  | 8302675     | 95973      | 23153940   |
| sandymao | 1702812     | 6205       | 3829023    |
| ponnetli | 24909       | 4784       | 95646      |

Show number of select, updates, and total queries issued by all client
hosts which have connected to this server:

sql> SHOW STATISTICS Com_select, Questions, Com_update FROM host;
+-------------------+--------------+----------+--------------+
| host              | Com_select   | Questions  | Com_update |
+-------------------+--------------+----------+--------------+
| db2.adomain.com   | 17715223     | 44224076 | 4143634981   |
| lathe.adomain.com | 2738061      | 9743215  | 3913397495   |
| telkomadsl.co.za  | 195          | 5390     | 539604       |

Всем спасибо заранее.

★★★★★

Неужели фря насколько ущербна?

после этой фразы все фрибсдшники будут считать своим долгом тебе помочь.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

да нет, просто на том же ExtSQL заявлена поддержка rhel, ubuntu, suse, AIX, Solaris и еще кучи всего, а патчи от google я на своей слаке собирал без всяких ошибок и они работали. во фре же у меня не собирается ни то, ни другое.

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

посмотрите как собирается порт databases/mysql50-server

кто же виноват, что ущербные ребята из mysql team и extsql не ориентируются на freebsd

hizel ★★★★★
()
Ответ на: комментарий от Komintern
In file included from sql_show.cc:28:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced by <stdlib.h>"
sql_show.cc: In function 'void set_malloc_stats()':
sql_show.cc:114: error: variable 'mallinfo mi' has initializer but incomplete type
sql_show.cc:114: error: invalid use of incomplete type 'struct mallinfo'
sql_show.cc:114: error: forward declaration of 'struct mallinfo'
sql_show.cc: In function 'void get_variable_value(THD*, show_var_st*, enum_var_type, system_status_var*, char*, char**, char**)':
sql_show.cc:1781: warning: comparison is always true due to limited range of data type
*** Error code 1

Stop in /root/mysql-5.0.37/sql.
*** Error code 1

Stop in /root/mysql-5.0.37/sql.
*** Error code 1

Stop in /root/mysql-5.0.37/sql.
*** Error code 1

Stop in /root/mysql-5.0.37.
*** Error code 1

Stop in /root/mysql-5.0.37.

печально :( никто ничего не подскажет из матерых бсд-шных методов решения проблемы?

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

тут тебе C-шник нужен. Реши первую ошибку, может и вторая уйдёт. Замени на #include <stdlib.h>

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

перебил хедер, ошибка-то осталась:

RY_COUNT=1000000 -MT sql_show.o -MD -MP -MF ".deps/sql_show.Tpo" -c -o sql_show.o sql_show.cc; then mv -f ".deps/sql_show.Tpo" ".deps/sql_show.Po"; else rm -f ".deps/sql_show.Tpo"; exit 1; fi
sql_show.cc: In function 'void set_malloc_stats()':
sql_show.cc:114: error: variable 'mallinfo mi' has initializer but incomplete type
sql_show.cc:114: error: invalid use of incomplete type 'struct mallinfo'
sql_show.cc:114: error: forward declaration of 'struct mallinfo'
sql_show.cc: In function 'void get_variable_value(THD*, show_var_st*, enum_var_type, system_status_var*, char*, char**, char**)':
sql_show.cc:1781: warning: comparison is always true due to limited range of data type
*** Error code 1

Stop in /root/mysql-5.0.37/sql.
*** Error code 1

а мускул именно такой, т.к google сами пишут:

the v3 patch with all of our changes for MySQL 5.0.37 as of May 6, 2009. This adds global transaction IDs, row-change logging and more InnoDB SMP performance fixes.

Komintern ★★★★★
() автор топика
Ответ на: комментарий от true_admin

http://google-mysql-tools.googlecode.com/svn/trunk/mysql-patches/all.v4-mysql...

вот патч от гугля. сорцы мускуля 5.0.37 где-угодно валяются, но выложу еще тут:
http://s8.freehost.com.ua/mysql-5.0.37.tar.gz

процесс донельзя банален:
zcat all.v4-mysql-5.0.37.patch.gz | patch -p1 && ./configure && make

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

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

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

а я и не ставлю его в продакшене :) это пока только начальные попытки тестирования, т.к если патчи от гугля не покатят - то наши кодеры будут писать свои костыли.

Komintern ★★★★★
() автор топика
Ответ на: комментарий от true_admin

аналогичная фигня.

#./configure --enable-perftools-tcmalloc && make
...
In file included from sql_show.cc:28:
/usr/include/malloc.h:3:2: error: #error "<malloc.h> has been replaced by <stdlib.h>"
sql_show.cc: In function 'void set_malloc_stats()':
sql_show.cc:114: error: variable 'mallinfo mi' has initializer but incomplete type
sql_show.cc:114: error: invalid use of incomplete type 'struct mallinfo'
sql_show.cc:114: error: forward declaration of 'struct mallinfo'
sql_show.cc: In function 'void get_variable_value(THD*, show_var_st*, enum_var_type, system_status_var*, char*, char**, char**)':
sql_show.cc:1781: warning: comparison is always true due to limited range of data type
*** Error code 1

сори за столь удручающее ламерство, как его собрать с tcmalloc? столь плотно никогда не сталкивался с подобным.

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

это уже не фигня, с этим уже ковыряться придётся :). Завтра гляну, интересно стало.

true_admin ★★★★★
()
Ответ на: комментарий от Komintern

Вкорячил в /usr/include/stdlib.h(наверно, лучше в сырцы мускла это добавить а не править системные хидеры) и поправил config.h на предмет malloc(хз почему ./configure не перегенеривал или генерил это неправильно). Так же заменил fdatasync на fsync и кое-где касты раставил.

/* SVID2/XPG mallinfo structure */

struct mallinfo {
  int arena;    /* non-mmapped space allocated from system */
  int ordblks;  /* number of free chunks */
  int smblks;   /* number of fastbin blocks */
  int hblks;    /* number of mmapped regions */
  int hblkhd;   /* space in mmapped regions */
  int usmblks;  /* maximum total allocated space */
  int fsmblks;  /* space available in freed fastbin blocks */
  int uordblks; /* total allocated space */
  int fordblks; /* total free space */
  int keepcost; /* top-most, releasable (via malloc_trim) space */
};

Вроде, собралося, проверять не буду :)

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Спасибо тебе, добрый человек.
Но мне все еще непонятно что и куда вписывать, чтоб оно собралось :-X

Komintern ★★★★★
() автор топика
Ответ на: комментарий от Komintern

Вставил то что выше писал в stdlib.h сразу после «#define _STDLIB_H_» и вот эти фиксы. По поводу кастов потом пусть прогеры посмотрят, я не сильно разбирался почему оно не заработало, похоже, time_t во фре другой чем в линухе.

--- ./mysql-5.0.37/config.h     2010-03-02 13:07:56.000000000 +0300
+++ ./mysql-5.0.37-true/config.h        2010-03-02 12:00:05.000000000 +0300
@@ -47,7 +47,7 @@
 /* #undef GOOGLE_STACKTRACE */
 
 /* Define to enable perftools tcmalloc support */
-/* #undef GOOGLE_TCMALLOC */
+#define GOOGLE_TCMALLOC 1
 
 /* READLINE: your system defines TIOCGWINSZ in sys/ioctl.h. */
 #define GWINSZ_IN_SYS_IOCTL 1
@@ -513,7 +513,7 @@
 /* #undef HAVE_MALLINFO */
 
 /* Define to 1 if you have the <malloc.h> header file. */
-/* #undef HAVE_MALLOC_H */
+#undef HAVE_MALLOC_H

diff -ur ./mysql-5.0.37/innobase/os/os0file.c ./mysql-5.0.37-true/innobase/os/os0file.c
--- ./mysql-5.0.37/innobase/os/os0file.c        2010-03-02 13:06:42.000000000 +0300
+++ ./mysql-5.0.37-true/innobase/os/os0file.c   2010-03-02 12:27:49.000000000 +0300
@@ -1925,7 +1925,7 @@
                                /* out: 0 if success, error code otherwise */
        os_file_t       file)   /* in, own: handle to a file */
 {
-  return (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) ? 0 : fdatasync(file);
+  return (srv_unix_file_flush_method == SRV_UNIX_NOSYNC) ? 0 : fsync(file);
 }
 #endif

diff -ur ./mysql-5.0.37/sql/httpd_request.cc ./mysql-5.0.37-true/sql/httpd_request.cc
--- ./mysql-5.0.37/sql/httpd_request.cc 2010-03-02 13:06:44.000000000 +0300
+++ ./mysql-5.0.37-true/sql/httpd_request.cc    2010-03-02 12:25:51.000000000 +0300
@@ -530,7 +530,7 @@
       WriteTableColumn(command_name[tmp->command]);
       
       // Column Time
-      WriteTableColumn(current_time - tmp->start_time);
+      WriteTableColumn((long int)current_time - tmp->start_time);
       
       // Column State
       if (tmp->killed == THD::KILL_CONNECTION)
@@ -691,7 +691,7 @@
       WriteTableColumn(u->user);
       WriteTableColumn((unsigned long)u->total_connections);
       WriteTableColumn((unsigned long)u->concurrent_connections);
-      WriteTableColumn(u->connected_time);
+      WriteTableColumn((long int)u->connected_time);
       WriteTableColumn(u->busy_time);
       WriteTableColumn(u->cpu_time);
       WriteTableColumn(u->bytes_received);


true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.