El paso de MySQL 5.5 a estable (Generally Available) el pasado 15 de diciembre ha pasado sin pena ni gloria. Vamos a ver que diferencias importantes tenemos con esta nueva release y como instalar dicha versión, ya que ha sufrido cambios.
Las principales características que de la versión 5.5 de MySQL son las siguientes:
- Principalmente se ha mejorado InnoDB para mejorar su escalabilidad en sistemas multi-core (SMP):
- En las plataformas que lo soportan, se usan instrucciones atómicas de la CPU para mejorar el rendimiento de los RW-locks (mutex que permite múltiples lectores). Se ha añadido una variable de estado para saber si la plataforma de una determinada instalación de MySQL admite las instrucciones atómicas llamado Innodb_have_atomic_builtins:
mysql> show status like 'Innodb_have_atomic%';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| Innodb_have_atomic_builtins | ON |
+-----------------------------+-------+
1 row in set (0.00 sec)- Es posible configurar múltiples threads de lectura y escritura concurrentes para leer las páginas más rápido:
mysql> show variables like 'innodb_%_io_threads';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| innodb_read_io_threads | 4 |
| innodb_write_io_threads | 4 |
+-------------------------+-------+
2 rows in set (0.00 sec) - Anteriormente se limitaba el número de IOPS (operaciones de entrada/salida por segundo) mediante un parámetro de compilación (por defecto 100). Se ha añadido la variable innodb_io_capacity para regular dinámicamente dicha restricción y se ha aumentado el valor por defecto a 200 ya que los sistemas modernos cada vez tienen más capacidad:
mysql> show variables like 'innodb_io_%';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| innodb_io_capacity | 200 |
+--------------------+-------+
1 row in set (0.00 sec)
- Se ha cambiado el storage engine por defecto de MyISAM a InnoDB. Este cambio es uno de los sensibles, ya que algunas aplicaciones asumen que si no se especifica es MyISAM
- Se ha añadido un nuevo schema con datos dinámicos sobre en rendimiento del servidor de bases de datos llamado performance_schema:
mysql> use performance_schema
Database changed
mysql> show tables;
+----------------------------------------------+
| Tables_in_performance_schema |
+----------------------------------------------+
| cond_instances |
| events_waits_current |
| events_waits_history |
| events_waits_history_long |
| events_waits_summary_by_instance |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_global_by_event_name |
| file_instances |
| file_summary_by_event_name |
| file_summary_by_instance |
| mutex_instances |
| performance_timers |
| rwlock_instances |
| setup_consumers |
| setup_instruments |
| setup_timers |
| threads |
+----------------------------------------------+
17 rows in set (0.00 sec) - Con solo un pequeño vistazo ya se ve que dicha base de datos es todo un mundo en si misma, por lo que será muy interesante ir viendo que se puede sacar de ella.Por defecto se encuentra desactivada:
mysql> show variables like 'performance_schema';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| performance_schema | OFF |
+--------------------+-------+
1 row in set (0.00 sec) - Para unificar el sistema de compilación entre Windows y los diferentes UNIX-like se substituye el autoconf por cmake:
yum install cmake -y
Ahora para compilar un MySQL deberemos seguir los siguientes pasos: Primero descargamos y descomprimimos:
wget 'http://www.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.8.tar.gz/from/http://mirrors.ircam.fr/pub/mysql/'
tar xzf mysql-5.5.8.tar.gz
cd mysql-5.5.8
Podemos ver las opciones de compilación en la documentación de MySQL o bien usar la opción -L de cmake para listar las opciones resumidas, combinada con la opción -H para ver su descripción:
# cmake . -LH
-- MySQL 5.5.8
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql-5.5.8
-- Cache values
// Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
// install prefix
CMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql
// Set to true if this is a community build
COMMUNITY_BUILD:BOOL=ON
// Enable profiling
ENABLED_PROFILING:BOOL=ON
// Enable debug sync (debug builds only)
ENABLE_DEBUG_SYNC:BOOL=ON
// Installation directory layout. Options are: STANDALONE (as in zip or tar.gz installer), RPM, DEB, SVR4
INSTALL_LAYOUT:STRING=STANDALONE
// default MySQL data directory
MYSQL_DATADIR:PATH=/usr/local/mysql/data
// MySQL maintainer-specific development environment
MYSQL_MAINTAINER_MODE:BOOL=OFF
// Link ARCHIVE statically to the server
WITH_ARCHIVE_STORAGE_ENGINE:BOOL=OFF
// Link BLACKHOLE statically to the server
WITH_BLACKHOLE_STORAGE_ENGINE:BOOL=OFF
// Use dbug/safemutex
WITH_DEBUG:BOOL=OFF
// Compile MySQL with embedded server
WITH_EMBEDDED_SERVER:BOOL=OFF
// Options are: none, complex, all
WITH_EXTRA_CHARSETS:STRING=all
// Link FEDERATED statically to the server
WITH_FEDERATED_STORAGE_ENGINE:BOOL=OFF
// Link INNOBASE statically to the server
WITH_INNOBASE_STORAGE_ENGINE:BOOL=ON
// Use bundled libedit
WITH_LIBEDIT:BOOL=ON
// Compile with tcp wrappers support
WITH_LIBWRAP:BOOL=OFF
// Link PARTITION statically to the server
WITH_PARTITION_STORAGE_ENGINE:BOOL=ON
// Link PERFSCHEMA statically to the server
WITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON
// Generate PIC objects
WITH_PIC:BOOL=OFF
// Use bundled readline
WITH_READLINE:BOOL=OFF
// Options are : no, bundled, yes (prefer os library if present otherwise use bundled), system (use os library)
WITH_SSL:STRING=no
// Compile MySQL with unit tests
WITH_UNIT_TESTS:BOOL=ON
// Valgrind instrumentation
WITH_VALGRIND:BOOL=OFF
// Which zlib to use (possible values are 'bundled' or 'system')
WITH_ZLIB:STRING=system
Añadiendo la opción -A obtendremos el listado completo de opciones de compilación:
cmake . -LAH
También tenemos la opción de usar la interfaz gráfica, cmake-gui:Algunas opciones interesantes son las siguientes:
- MYSQL_DATADIR=/var/mysql/: Definimos dónde queremos dejar el datadir del MySQL, por ejemplo en /var/mysql
- CMAKE_INSTALL_PREFIX=/usr/local/mysql: Indicamos dónde instalar el MySQL
- ENABLE_DEBUG_SYNC=0: Si no se habilita del DEBUG no hace nada, pero nunca esta de más dejarlo quitado
- WITH_UNIT_TESTS=0: Deshabilitamos los unit-tests
- WITH_FAST_MUTEXES: No se muy bien porque esta opción se ha deshabilitado por defecto en MySQL 5.5, substituye los mutex por spinlocks
Por lo tanto el cmake quedaría con las siguientes opciones:
cmake . -DMYSQL_DATADIR=/var/mysql/ -DENABLE_DEBUG_SYNC=0 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_UNIT_TESTS=0
A continuación seguimos con la compilación:
make && make install
Con la sorpresa que en dicha versión tenemos un porcentaje y colorines: - Por defecto, la replicación se hace asíncrona: El master escribe las modificaciones en su binary log sin saber si algún slave lo ha recibido y procesado, pudiendo darse el caso si se usa el slave como método de alta disponibilidad, que se pierdan cambios si se produce un fallo en el master. Con la introducción de replicación semisincrona.La replicación semisincrona se habilita en el master, cuando el slave la soporta, el master espera a que almenos un slave confirme que ha recibido la transacción escribiéndola en el relay log y se ha escrito a disco o a un determinado timeout.
Relacionados
- Vistas (views) en MySQL
- Uso de mk-find para realizar analyze y optimize de las tablas MySQL
- Uso de Maatkit para detectar índices duplicados en MySQL
- Tipos de backups con MySQL
- Tamaño caracteres especiales en UTF-8 con varchar en MySQL
Fuente:
systemadmin.es