Stéphane COMBAUDON
Datos técnicos
Este libro acerca de MySQL 5.7 se dirige a los desarrolladores y administradores de MySQL que deseen consolidar sus conocimientos sobre el SGBD Open Source más difundido del mercado.
El libro comienza con una presentación de las bases que serán necesarias para aprovechar al máximo todas las capacidades de MySQL: presentación de la arquitectura del servidor y de los principales motores de almacenamiento, métodos de instalación de mono y multi-instancias, buenas prácticas de configuración.
Después de estas bases que proporcionan una buena comprensión de las características del SGBD, aprenderemos cómo administrar el servidor en el día a día, teniendo en cuenta los principios esenciales de seguridad, poniendo en marcha estrategias eficaces para las copias de seguridad y restauraciones.
La última parte está dedicada a las técnicas avanzadas que darán las claves para resolver los problemas más complejos: optimización de los índices y las consultas, mejorar la disponibilidad y rendimiento con la creación de una solución de replicación, y técnicas de supervisión del estado del SGBD.
Hay disponibles elementos complementarios para descarga.
Prólogo
1. MySQL en pocas palabras
2. Objetivos del libro
3. Descripción
Aspectos generales de MySQL
1. Introducción
2. Arquitectura
2.1 El servidor y los clientes
2.2 Los protocolos de comunicación
3. Utilización de recursos de hardware
3.1 Uso del disco
3.2 Uso de la memoria
3.3 Uso del procesador
3.4 Uso de la red
4. Variantes de MySQL
4.1 MariaDB
4.2 Percona Server
4.3 Amazon RDS/Aurora
4.4 WebScaleSQL
4.5 Galera
5. Los motores de almacenamiento
5.1 InnoDB
5.1.1 Resumen de funcionamiento
5.1.2 Funciones principales
5.2 MyISAM
5.3 Memory
5.4 Archive
5.5 XtraDB
5.6 TokuDB
5.7 RocksDB
5.8 Otros motores
6. Bloqueos y transacciones
6.1 Bloqueos implícitos
6.1.1 Líneas generales
6.1.2 Especificidades InnoDB
6.2 Bloqueos explícitos
6.2.1 Bloqueos de tabla
6.2.2 Temas específicos de InnoDB
6.3 Bloqueos cooperativos
6.4 Transacciones
6.4.1 Líneas generales
6.4.2 InnoDB y las transacciones
6.4.3 Mezclar motor transaccional y motor no transaccional
6.4.4 Interbloqueos (deadlocks)
Instalación del servidor
1. Información general
1.1 Estabilidad de las versiones
1.2 Versión comunitaria y versión Enterprise
1.3 Ciclo de desarrollo
1.4 Elección del tipo de instalación
2. Instalación en UNIX y derivados
2.1 Instalación por gestor de paquetes
2.2 Instalación con ejecutables precompilados
2.3 Arranque del servidor
2.3.1 Script mysql.server
2.3.2 Script mysqld_safe
2.3.3 Invocación directa de mysqld
2.4 Parada del servidor
2.4.1 Script mysql.server
2.4.2 mysqladmin
2.4.3 Comando kill
2.5 Resolución de problemas de instalación frecuentes
2.5.1 Errores InnoDB
2.5.2 Archivo errmsg.sys no encontrado
2.6 Securización de la instalación
2.7 Instalación de varias instancias
2.7.1 Precauciones necesarias
2.7.2 Instalación de versiones diferentes
2.7.3 Uso del mismo ejecutable que otra instancia
2.7.4 Arranque y parada de las instancias con mysqld_multi
2.8 MySQL Sandbox
2.8.1 Presentación de MySQL Sandbox
2.8.2 Instalación
2.8.3 Creación de una instancia
2.8.4 Creación de dos instancias independientes
2.8.5 Otras posibilidades
3. Instalación en Windows
3.1 Utilización del instalador
3.2 Instalación con archivos ejecutables
3.3 Arranque del servidor
3.3.1 Servicio
3.3.2 Invocación directa de mysqld
3.4 Parada del servidor
3.4.1 Servicio
3.4.2 mysqladmin
3.4.3 Administrador de tareas
3.5 Resolución de problemas de instalación
3.5.1 Permisos insuficientes
3.5.2 Conflicto con una instalación existente
3.5.3 Problemas en las rutas
3.6 Securización de la instalación
3.7 Instalación de varias instancias
3.7.1 Precauciones necesarias
3.7.2 Versiones diferentes
3.7.3 Uso del mismo ejecutable
4. Actualización de MySQL
4.1 Precauciones necesarias antes de la actualización
4.1.1 Saltos de versión
4.1.2 Cambios introducidos por una versión
4.1.3 Copia de seguridad de los datos
4.2 Proceso de actualización
4.2.1 Posibles estrategias
4.2.2 Actualización de los ejecutables
4.2.3 Verificación de las tablas
4.3 Comprobaciones tras la actualización
5. Instalación de las herramientas utilizadas en el libro
5.1 Instalación de la base world
5.2 Instalación de la base sakila
6. Instalación de Percona Toolkit
7. Instalación de MySQL Utilities
Configuración del servidor
1. Introducción
2. ¿ Cómo configurar el servidor ?
2.1 Configuración durante la compilación
2.2 Configuración en el archivo de configuración
2.2.1 Ubicación del archivo de configuración
2.2.2 Estructura del archivo de configuración
2.3 Configuración al arrancar mysqld
2.4 Configuración dinámica del servidor
2.4.1 Cambio para la sesión
2.4.2 Cambio global
3. Visualización de la configuración
4. Configuración de InnoDB
4.1 Parámetros fundamentales
4.2 Aislamiento y durabilidad
4.2.1 Ajuste del aislamiento
4.2.2 Ajuste de la durabilidad
4.3 Otros parámetros
5. El registro
5.1 El registro binario
5.2 El registro de peticiones lentas
5.3 El registro de errores
5.4 El registro general
5.5 Mejores prácticas
5.5.1 Configuración
5.5.2 Supervisar el uso del disco
5.5.3 Impacto sobre el rendimiento
6. El modo SQL
6.1 Los modos habituales
6.2 Las combinaciones de modos
6.3 Modo SQL por defecto
7. Otros parámetros
7.1 Parámetros MyISAM
7.2 Caché de peticiones
7.2.1 Función de la caché
7.2.2 Activación de la caché
7.2.3 Peticiones excluidas de la caché
7.2.4 Llamada a un elemento de caché
7.2.5 Actualización de la caché
7.2.6 Fragmentación
7.2.7 Herramienta de caché
7.2.8 Parámetros asociados a la caché
7.2.9 Configuración del tamaño de la caché
7.2.10 Determinación de la eficiencia de la caché
7.2.11 Reducción de la fragmentación
7.3 Otras variables
7.3.1 Número de conexiones simultáneas
7.3.2 Cachés de tablas
7.3.3 Caché de threads
7.3.4 Parámetros que no deben modificarse
Seguridad y gestión de los usuarios
1. Introducción
2. Securización del servidor MySQL
2.1 Securización de la instalación
2.1.1 Controlar los permisos
2.1.2 Poner contraseña a la cuenta root
2.1.3 Eliminar las cuentas anónimas
2.1.4 Eliminar el esquema test
2.1.5 Securizar la instalación con la herramienta mysql_secure_installation
2.2 Utilización de SSL
2.2.1 Las opciones
2.2.2 Las principales etapas
3. Cifrado de datos
4. Las opciones para reforzar la seguridad
4.1 skip-networking
4.2 bind-address
4.3 skip-name-resolve
4.4 skip-show-database
4.5 secure-file-priv
4.6 chroot
5. Gestión de usuarios y contraseñas
5.1 Conexión a cuentas de usuario
5.2 Gestión de cuentas de usuario
5.3 Roles
5.4 Plug-ins de autenticación
5.5 Plug-in de validación de las contraseñas
5.6 Expiración de contraseña
5.7 Utilidad de configuración de contraseñas
5.8 Asignación de los derechos
5.8.1 Los derechos de administración
5.8.2 Los derechos a nivel de los esquemas
5.8.3 Los derechos a nivel de las tablas
5.8.4 Los derechos a nivel de columnas
5.8.5 Los derechos para las rutinas almacenadas
5.9 Limitación del uso de recursos
5.10 Visualización de los derechos
5.11 Entrada en vigor de los derechos
5.12 Eliminación de los derechos
5.13 Mejores prácticas de gestión de los derechos
6. Securización de las vistas y rutinas almacenadas
Respaldo y restauración
1. Líneas generales
1.1 Introducción
1.2 Respaldo lógico
1.3 Respaldo físico
1.4 Respaldo completo/incremental
1.5 Respaldo y replicación
1.6 Respaldo y motores de almacenamiento
1.6.1 MyISAM
1.6.2 InnoDB
1.6.3 MyISAM e InnoDB
1.7 Restauración
2. En la práctica
2.1 Importación/exportación manual
2.2 mysqldump
2.3 Percona XtraBackup
2.4 Otras soluciones
2.4.1 mylvmbackup
2.4.2 mysqlpump
Optimización
1. Hardware y sistema operativo
1.1 Procesador
1.2 Memoria RAM
1.3 Disco duro
1.3.1 Elementos de elección
1.3.2 RAID
1.3.3 SSD
1.4 Sistema operativo
2. Optimización del esquema
2.1 Tipos de datos
2.1.1 Principios generales
2.1.2 Números
2.1.3 Cadenas de caracteres
2.1.4 Datos binarios
2.1.5 Fechas y horas
2.1.6 ENUM y SET
2.2 Normalización
2.2.1 Papel de la normalización
2.2.2 Primera forma normal
2.2.3 Segunda forma normal
2.2.4 Tercera forma normal
2.2.5 Resumen de las ventajas de la normalización
2.2.6 Inconvenientes de la normalización
2.3 Desnormalización
2.4 Modificación del esquema en producción
3. Indexación
3.1 Aspectos generales de los índices
3.1.1 Rol de un índice
3.1.2 Claves e índice
3.1.3 Columnas que pueden beneficiarse de un índice
3.1.4 Creación y eliminación de un índice
3.1.5 ¿ Qué columnas indexar ?
3.2 Tipos de índice
3.2.1 índices únicos
3.2.2 Claves primarias
3.2.3 índices no únicos
3.2.4 índice en varias columnas
3.2.5 índice sobre un prefijo de columna
3.2.6 índices redundantes
3.2.7 Claves externas
3.3 Conceptos avanzados
3.3.1 Index b-tree
3.3.2 índice hash
3.3.3 Otros algoritmos de indexación
3.3.4 Selectividad y distribución de valores
3.3.5 Index cluster InnoDB
3.3.6 índice de cobertura
3.4 Indexación FULLTEXT
3.4.1 Nociones básicas sobre la indexación FULLTEXT
3.4.2 Búsqueda en lenguaje natural
3.4.3 Búsqueda booleana
3.4.4 Búsqueda con expansión de la petición
3.4.5 Configuración de la búsqueda
3.4.6 Rendimiento
3.4.7 Limitaciones y puntos que se deben conocer
4. El comando EXPLAIN
4.1 Rol
4.2 Acceso a los datos
4.2.1 Acceso secuencial o aleatorio
4.2.2 Acceso en memoria o en disco
4.2.3 En resumen
4.3 Leer el plan de ejecución
4.3.1 Ejemplo simple
4.3.2 Peticiones diferentes de SELECT
4.3.3 Joins (uniones)
4.3.4 Uniones
4.3.5 Subconsultas
4.4 Columnas principales
4.4.1 Tipos de acceso a los datos
4.4.2 índices examinados
4.4.3 Número de filas recorridas
4.4.4 La columna Extra
4.5 EXPLAIN EXTENDED
5. Optimización de las peticiones
5.1 Aislamiento de las columnas
5.2 Joins
5.3 Filtrados
5.4 Ordenación
5.5 Agregaciones
5.6 Reescritura de peticiones
5.7 Utilización de varios índices
5.8 Otras características
6. Optimizaciones para MySQL 5.6/5.7
6.1 Index Condition Pushdown
6.2 Multi Range Read
7. Mantenimiento de las tablas
7.1 Actualización de las estadísticas del índice
7.2 Defragmentación de las tablas
7.3 Otros comandos
Replicación
1. Aspectos generales sobre la replicación
1.1 Utilidad de la replicación
1.2 Funcionamiento de la replicación
1.3 Formatos de replicación
2. Puesta en marcha de la replicación
2.1 Replicación maestro-esclavo(s)
2.1.1 Configuración
2.1.2 Puntos fuertes y débiles de esta configuración
2.2 Replicación maestro-maestro
2.2.1 Configuración
2.2.2 Puntos fuertes y débiles de esta configuración
2.3 Replicación en varios niveles
2.3.1 Configuración
2.3.2 Puntos fuertes y débiles de esta configuración
2.4 Principales variables
3. Resolución de problemas de operación frecuentes
3.1 Impedir la replicación de algunas peticiones
3.2 No-replicación de una petición
3.3 Evitar el retraso de replicación
3.4 Corregir un error de replicación
3.5 Recuperar el espacio en disco de los registros binarios
3.6 Eliminar la configuración de replicación
3.7 Verificar la coherencia de los datos entre un maestro y un esclavo
3.8 Algunos comandos útiles
3.8.1 SHOW SLAVE STATUS
3.8.2 START/STOP SLAVE {IO_THREAD|SQL_THREAD}
3.8.3 RESET MASTER
4. Replicación y alta disponibilidad
4.1 Promoción de un esclavo
4.2 Automatización de la promoción
5. Replicación y escalabilidad
5.1 Escalabilidad en lectura
5.2 Escalabilidad en escritura
6. Funcionalidades avanzadas
6.1 Identificadores de transacción
6.2 Replicación paralela
6.3 Replicación multifuente
6.3.1 Introducción
6.3.2 Implementación
6.4 Replicación semisíncrona
6.4.1 Introducción
6.4.2 Implementación
6.4.3 Novedades con MySQL 5.7
6.5 Replicación retrasada
Otras funcionalidades
1. Particionado
1.1 Interés y limitaciones
1.1.1 Gestión del incremento de carga
1.1.2 Gestión de grandes volúmenes
1.1.3 Partition pruning
1.1.4 Eliminación rápida de un gran volumen de datos
1.1.5 Limitaciones
1.2 Tipos de particiones
1.2.1 El particionado de tipo RANGE
1.2.2 El particionado de tipo RANGE COLUMNS
1.2.3 El particionado de tipo LIST
1.2.4 El particionado de tipo LIST COLUMNS
1.2.5 El particionado de tipo HASH
1.2.6 El particionado de tipo KEY
1.2.7 Las variantes LINEAR HASH/KEY
1.2.8 Selección explícita de una partición
1.2.9 Subparticionado
1.2.10 Funciones del particionado
1.2.11 Import y export de una partición en una tabla
1.3 Gestión de particionado
1.4 Mantenimiento
2. Rutinas almacenadas
2.1 Rol
2.2 Sintaxis
2.2.1 Procedimientos almacenados
2.2.2 Funciones almacenadas
2.3 Uso
2.4 Metadatos
2.5 Restricciones
3. Disparadores (triggers)
3.1 Rol
3.2 Sintaxis
3.3 Restricciones
4. Eventos
4.1 Rol
4.2 Sintaxis
4.3 Restricciones
5. Vistas
5.1 Rol
5.2 Sintaxis
6. Columnas generadas
6.1 Introducción
6.2 Columnas virtuales
6.3 Columnas persistentes
7. Soporte JSON
7.1 El tipo de datos JSON
7.2 Ejemplo de operaciones con columnas JSON
7.3 Indexación
Herramientas de supervisión
1. Introducción
2. Acceso a los metadatos
2.1 Comandos específicos de MySQL
2.1.1 Comandos SHOW
2.1.2 Comando DESCRIBE
2.2 BBDD information_schema
3. Herramientas básicas para la supervisión
3.1 SHOW PROCESSLIST
3.2 SHOW GLOBAL STATUS
3.3 SHOW ENGINE INNODB STATUS
3.3.1 SEMAPHORES
3.3.2 LAST FOREIGN KEY ERROR
3.3.3 LAST DETECTED DEADLOCK
3.3.4 TRANSACTIONS
3.3.5 FILE I/O
3.3.6 INSERT BUFFER AND ADAPTATIVE HASH INDEX
3.3.7 LOG
3.3.8 BUFFER POOL AND MEMORY
3.3.9 ROW OPERATIONS
4. Performance Schema
4.1 Rol
4.2 Configuración
4.3 Esquema sys
5. Identificación de los problemas de las peticiones
5.1 Peticiones lentas
5.2 Deadlocks
6. Herramientas de supervisión del sistema
6.1 Cacti
6.2 Grafana
6.3 Nagios
6.4 Identificación de los problemas de sistema con Linux
6.4.1 vmstat
6.4.2 iostat
6.4.3 mpstat
índice
2024 © Vuestros Libros Siglo XXI | Desarrollo Web Factor Ideas