
Cuando se emplean soluciones complejas sobre MySQL a menudo no se valoran convenientemente cuestiones de fiabilidad, escalabilidad y rendimiento, aspectos sin duda fundamentales para el buen funcionamiento de un sitio web.
MySQL Avanzado le presenta los métodos, consejos y aplicaciones para que pueda obtener el máximo partido de dos aspectos clave como son la indexación y la optimización. Aprenderá estrategias útiles sobre replicación, copias de seguridad y equilibrado de carga, a través de una descripción de las herramientas disponibles y de su utilización en entornos reales. Además, incluye una serie de técnicas complementarias necesarias para llevar a cabo estas tareas, como por ejemplo la configuración avanzada, los bancos de pruebas y el estudio de registros.
Esta obra didáctica y de consulta cubre con una exhaustiva información las técnicas y soluciones no documentadas para conseguir el máximo rendimiento de MySQL, convirtiéndose en la referencia más completa para los usuarios.



Prefacio
Distribución del resto del libro
Repaso de los fundamentos
Temas de referencia para el resto del libro
Dónde afinar las aplicaciones
Escalado tras la aplicación de cambios
Asegurarse de que el trabajo no haya sido en balde
Miscelánea
Versiones de software y disponibilidad
Agradecimientos
De Jeremy
De Derek
Capítulo 1. Repaso de los fundamentos
Instalación binaria o compilada a partir del código fuente
Archivos binarios de MySQL.com u otras distribuciones
Archivos de configuración
Ubicación de los archivos
Formato de los archivos
Archivos de ejemplo
Reconfiguración
El comando SHOW
SHOW VARIABLES
SHOW PROCESSLIST
SHOW STATUS
SHOW INNODB STATUS
Capítulo 2. Motores de almacenamiento (tipos de tablas)
Arquitectura de MySQL
Bloqueos y concurrencia
Bloqueos de lectura y escritura
Nivel de aplicación de los bloqueos
Bloqueos de tabla
Bloqueos de página
Bloqueos de fila
Control de concurrencia con múltiples versiones
Transacciones
Ventajas y desventajas
Niveles de aislamiento
Lectura sin confirmación
Lectura confirmada
Lectura repetible
Lecturas en serie
Interbloqueos
Registro de transacciones
Transacciones en MySQL
AUTOCOMMIT
Confirmación implícita
Niveles de aislamiento
Combinación de motores de almacenamiento en una transacción
Transacciones simuladas
Selección del motor más apropiado
Consideraciones
Transacciones y concurrencia
Copias de seguridad
Características especiales
Ejemplos prácticos
Registro
Tablas en modo sólo lectura y casi siempre lectura
Procesamiento de solicitudes
Cotizaciones de valores
Tablones de anuncios y foros de discusión
Aplicaciones en CD-ROM
Conversión de tablas
ALTER TABLE
Volcado y reimportación
CREATE y SELECT
Los motores de almacenamiento
Tablas MyISAM
Almacenamiento
Otras cuestiones
Tablas MyISAM comprimidas
Tablas MyISAM RAID
Tablas MyISAM de fusión
Tablas InnoDB
Almacenamiento
Bloqueos y concurrencia
Características especiales
Tablas de pila (en memoria)
Limitaciones
Tablas Berkeley DB (BDB)
Capítulo 3. Benchmarking
La importancia del Benchmarking
Estrategias para benchmarking
Herramientas de benchmarking
The MySQL Benchmark Suite
MySQL super-smack
Preparando los datos de prueba
Configuración
MyBench: una solución a medida
Capítulo 4. Índices
Fundamentos de indexación
Conceptos sobre índices
Índices parciales
Índices multicolumna
Orden de los índices
Índices como constraints
Índices secundarios y cluster
Índices únicos contra claves primarias
Indexar nulos (NULL)
Estructura de índice
Índices tipo B-Tree
Índices de tipo Hash
Índices R-Tree
Tipos de tablas e índices
Tablas MyISAM
Escritura retardada de claves
Tablas Heap
Tablas BDB
Tablas InnoDB
Índices Full-Text
Limitaciones de los índices
Uso de los comodines
Expresiones regulares
Estadísticas pobres o corruptas
Demasiadas filas coincidentes
Mantenimiento de índices
Obtener información de los índices
Recuperar estadísticas de índices
Capítulo 5. Optimización de consultas
Proceso básico de las consultas
Caché de consulta
Parseo, análisis y optimización
El uso de EXPLAIN
Joins
Ejecución
Características del optimizador
Demasiada poca diversidad
Orden basado en índice
Consultas imposibles
Utilizar textos completos en lugar de LIKE
Identificar consultas lentas
Modificadores de MySQL
Orden en Join
Uso de índices
Resultados
Caché de consulta
Consejos muy sencillos para consultas
Dos mejor que una
Union en lugar de OR
Capítulo 6. Parametrización y rendimiento del servidor
Factores que limitan el rendimiento
Discos
Memoria
Búferes y caché de MySQL
Red
RAID
Mezcle y acierte
Ejemplo de configuración
Hardware contra Software
¿IDE o SCSI?
RAID en los esclavos
Sistema operativo
Filesystems
Journaling
Otras características y trucos
Eligiendo un formato de filesystem
FreeBSD
¿Realmente necesita un filesystem?
Swap
Tramas
Técnicas
Resolviendo los cuellos de botella de E/S
Índice incorrecto
Tablas temporales
Caché
Reparta la carga
Resolver los cuellos de botella de CPU
Resolver cuellos de botella en memoria
Resolver cuellos de botella en el núcleo
Capítulo 7. Replicación
Introducción a la replicación
Problemas que soluciona la replicación
Distribución de los datos
Balanceo de carga
Copia de seguridad y recuperación
Alta disponibilidad y tolerancia a fallos
Problemas no solventados con la replicación
Transmisión de datos en tiempo real
Pedidos on-line
Rendimiento en la replicación
Configurar la replicación
En un nuevo servidor
Creación de cuentas
Entradas del archivo de configuración
Reinicie el maestro
Reiniciar el esclavo
En un servidor existente
Qué es necesario que ocurra
Imagen o copia de seguridad y luego copiar
Copias de tablas on-line
Copia on-line y sincronización (sólo para versiones MySQL 4.x)
Los detalles del proceso
La replicación en la versión 3.23
La replicación en la versión 4.0
Archivos y configuraciones relacionados con la replicación
Archivos de registro
Archivos de índice de registro
Archivos de estado
Filtrado
Arquitecturas de replicación
Las reglas de la replicación
Configuraciones ejemplos
Maestro con esclavos
Esclavo con dos maestros
Maestro dual
Anillo de replicación (múltiples maestros)
Piramidal
Diseño personalizado
Administración y mantenimiento
Monitorización
Estado del maestro
Estado del esclavo
Ritmo de la replicación
Rotación del registro
Cambiar los maestros
Utilizar los valores adecuados
Herramientas
mysqlbinlog: visualizar los datos en los registros
check_repl: asegurar que la replicación se está llevando a cabo
fix_repl: omitir una consulta incorrecta y continuar la replicación
purge_binary_logs: reclamar el espacio utilizado por los registros binarios
mysqldiff: comprobaciones sobre el buen estado de la replicación
write_heartbeat: generar una comprobación periódica de buen estado
read_heartbeat: medición del registro de replicación
Problemas más comunes
Cambios en los datos del esclavo
ID de servidor no únicas
Corrupción del registro o registro parcialmente grabado
Carga de datos en grandes cantidades
Dependencias no replicadas
Tablas temporales que no están
Registro binario desincronizado con el registro de transacciones
El esclavo quiere conectarse a un maestro incorrecto
El futuro de la replicación
Eliminación de la instantánea
Replicación segura contra fallos
Replicación segura de múltiples maestros
Claves únicas auto incrementales multi-parte
Campos auto incrementales partidos
Capítulo 8. Balanceo de carga y alta disponibilidad
Fundamentos del balanceo de carga
Diferencias entre el balanceo de carga de HTTP y MySQL
Solicitudes
Particionado
Pila de conexión
Aspectos de la configuración
Comprobaciones de estado
Determinar el estado
Límites de conexión
Algoritmos de la siguiente conexión
Las consecuencias de elegir un algoritmo incorrectamente
Particionado de un cluster
Particionado basado en perfiles
Particionado basado en los datos
Filtrado y particionado en múltiples clusters
Filtrado
Clusters separados
Alta disponibilidad
Replicación de maestro dual
Almacenamiento compartido con espera
Soluciones comerciales
Veritas cluster agent
EMIC Networks
Capítulo 9. Copias de seguridad y recuperación
¿Por qué las copias de seguridad?
Recuperación ante desastres
Auditoría
Pruebas
Consideraciones
¿Volcados o copias de seguridad de imágenes?
¿En línea o fuera de línea?
Tipos de tablas y consistencia
Requerimientos de almacenamiento
Replicación
Herramientas y técnicas
mysqldump
Restauración
mysqlhotcopy
Restauración
mysqlsnapshot
Restauración
InnoDB Hot Backup
Copias de seguridad fuera de línea
Restauración
Imágenes del sistema de archivos
Desarrollar su propio script de copia de seguridad
Capítulo 10. Seguridad
Conceptos básicos sobre cuentas
Privilegios
Privilegios globales
Las tablas de permisos
Comprobaciones para los privilegios
La tabla user
Comparación del host
La tabla host
La tabla db
La tabla tables_priv
La tabla columns_priv
GRANT y REVOKE
Mecanismos para los permisos
Cuenta para el administrador del sistema
Cuentas para los empleados normales
Registro y acceso de sólo escritura
Operaciones y monitorización
Problemas comunes y limitaciones
No es posible revocar ciertos privilegios
Los criterios de bases de datos y hosts no pueden excluir a otros criterios
Los privilegios no desaparecen cuando sí lo hacen los objetos
Seguridad en los sistemas operativos
Directrices
Seguridad en la red
Conexiones sólo desde máquinas locales
Corta fuegos (Firewall)
Sin ruta predeterminada
MySQL en un DMZ
Encriptación de conexiones y tunneling
Redes privadas virtuales
SSL en MySQL
Tunneling SSH
TCP Wrappers
Bloqueo automático de máquinas
Encriptación de los datos
Serializar contraseñas
Sistemas de archivos encriptados
Encriptación a nivel de la aplicación
Aspectos del diseño
Modificación del código fuente
MySQL en un entorno chroot
Apéndice A. Los comandos SHOW STATUS y SHOW INNODB STATUS
SHOW STATUS
Estadísticas sobre conexiones de hilos de ejecución
Contadores de comandos
Archivos temporales y tablas
Patrones de acceso datos
Búfer clave MyISAM
Descriptores de archivo
Caché de consultas
SELECT
Ordenaciones
Bloqueo de tablas
SHOW INNODB STATUS
Apéndice B. mytop
Introducción
Vista Hilos
Vista Comandos
Vista Estado
Obtener mytop
Requisitos
Instalación
Configuración y uso
Tareas comunes
Apéndice C. phpMyAdmin
Conceptos básicos
Ejemplos prácticos
Mantenimiento de usuarios
Comandos simples de SQL
Exportar y descargar datos
Índice alfabético
Otros clientes que compraron MySQL Avanzado, también compraron:
Otros libros de MYSQL: