systemadmin.es > DBA > Patch al MySQL 5.5 para guardar el timestamp cuando aumenta el max_used_connections

Patch al MySQL 5.5 para guardar el timestamp cuando aumenta el max_used_connections

Anteriormente ya vimos el patch para MySQL 5.1 para max_used_connections_ts que nos indica el timestamp en que se ha llegado (mayor o igual) al high water mark.

El patch para la versión 5.5 es el siguiente:

diff -Naur mysql-5.5.10/sql/mysqld.cc mysql-5.5.10_max_used_ts/sql/mysqld.cc
--- mysql-5.5.10/sql/mysqld.cc	2011-03-09 16:11:38.000000000 +0100
+++ mysql-5.5.10_max_used_ts/sql/mysqld.cc	2011-03-29 14:40:38.000000000 +0200
@@ -332,6 +332,7 @@
 static uint kill_cached_threads, wake_thread;
 static ulong killed_threads;
 static ulong max_used_connections;
+static ulong max_used_connections_ts;
 static volatile ulong cached_thread_count= 0;
 static char *mysqld_user, *mysqld_chroot;
 static char *default_character_set_name;
@@ -2393,6 +2394,7 @@
           (ulong) dflt_key_cache->key_cache_mem_size);
   fprintf(stderr, "read_buffer_size=%ld\n", (long) global_system_variables.read_buff_size);
   fprintf(stderr, "max_used_connections=%lu\n", max_used_connections);
+  fprintf(stderr, "max_used_connections_ts=%lu\n", max_used_connections_ts);
   fprintf(stderr, "max_threads=%u\n", thread_scheduler->max_threads);
   fprintf(stderr, "thread_count=%u\n", thread_count);
   fprintf(stderr, "connection_count=%u\n", connection_count);
@@ -5013,6 +5015,9 @@
   if (connection_count > max_used_connections)
     max_used_connections= connection_count;
 
+  if (connection_count >= max_used_connections)
+    max_used_connections_ts= (ulong)my_time(0);
+
   mysql_mutex_unlock(&LOCK_connection_count);
 
   /* Start a new thread to handle connection. */
@@ -6462,6 +6467,7 @@
   {"Key_writes",               (char*) offsetof(KEY_CACHE, global_cache_write), SHOW_KEY_CACHE_LONGLONG},
   {"Last_query_cost",          (char*) offsetof(STATUS_VAR, last_query_cost), SHOW_DOUBLE_STATUS},
   {"Max_used_connections",     (char*) &max_used_connections,  SHOW_LONG},
+  {"Max_used_connections_ts",     (char*) &max_used_connections_ts,  SHOW_LONG},
   {"Not_flushed_delayed_rows", (char*) &delayed_rows_in_use,    SHOW_LONG_NOFLUSH},
   {"Open_files",               (char*) &my_file_opened,         SHOW_LONG_NOFLUSH},
   {"Open_streams",             (char*) &my_stream_opened,       SHOW_LONG_NOFLUSH},

También lo podemos descargar el patch directamente.

Mediante este patch obtendremos la variable Max_used_connections_ts como para el caso de MySQL 5.1 con SHOW STATUS:

mysql> show status like 'Max_used%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Max_used_connections    | 20         |
| Max_used_connections_ts | 1301408375 |
+-------------------------+------------+
2 rows in set (0.00 sec)

El parche se aplica de forma análoga al anterior. Primero lo bajamos:

cd /usr/local/src
svn export http://nagios-systemadmin.googlecode.com/svn/trunk/patchs/patch.mysql.55.max_used_connections_ts.patch

Luego entramos al directorio del código fuente del MySQL 5.5 y aplicamos el parche:

cd mysql-5.5.10
patch -p1 < ../patch.mysql.55.max_used_connections_ts.patch 

2 comments to “Patch al MySQL 5.5 para guardar el timestamp cuando aumenta el max_used_connections”

  1. La ruta al patch no funciona (has añadido la ruta del sistema a la URL “systemadmin.es”). La URL correcta es: http://systemadmin.es/wp-content/uploads/2011/03/patch.mysql.55.max_used_connections_ts.patch

    Saludos!

  2. Corregido!

    Muchas gracias!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>