Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Los sistemas de gestión de bases de datos forman parte del núcleo de muchas empresas. Aunque una empresa no se centre en la tecnología, necesita almacenar, acceder y manipular datos de forma rápida, segura y fiable. Debido a la pandemia de COVID-19, muchas áreas que tradicionalmente se habían resistido a la transformación digital, como los sistemas judiciales de muchos países, se están integrando ahora a través de la tecnología debido a las restricciones de viajes y reuniones, y las compras online y el trabajo desde casa son más populares que nunca.
Pero no son sólo las catástrofes las que han impulsado cambios tan trascendentales. Con la llegada del 5G, pronto tendremos muchas más máquinas conectadas a Internet que seres humanos. Ya se están recopilando, almacenando y utilizando cantidades ingentes de datos para entrenar modelos de aprendizaje automático, inteligencia artificial y mucho más. Estamos viviendo el comienzo de la próxima revolución.
Han surgido varios tipos de bases de datos para ayudar en la misión de almacenar más datos -especialmente datos no estructurados-, incluidas las bases de datos NoSQL como MongoDB, Cassandra y Redis. Sin embargo, las bases de datos SQL tradicionales siguen siendo populares, y no hay indicios de que vayan a desaparecer en un futuro próximo. Y en el mundo SQL, sin duda la solución de código abierto más popular es MySQL.
Los dos autores de este libro hemos trabajado con muchos clientes de todas partes del mundo. Por el camino, hemos aprendido muchas lecciones y experimentado un gran número de casos de uso, que van desde aplicaciones monolito de misión crítica hasta aplicaciones de microservicios más sencillas. Este libro está lleno de consejos y sugerencias que creemos que la mayoría de los lectores encontrarán útiles para sus actividades diarias.
A quién va dirigido este libro
Este libro está dirigido principalmente a las personas que utilizan MySQL por primera vez o que lo están aprendiendo como segunda base de datos. Si entras en el campo de las bases de datos por primera vez, los primeros capítulos te introducirán en los conceptos de diseño de bases de datos y te mostrarán cómo implementar MySQL en distintos sistemas operativos y en la nube.
Para los que procedan de otro ecosistema, como Postgres, Oracle o SQL Server, el libro cubre estrategias de copia de seguridad, alta disponibilidad y recuperación ante desastres.
Esperamos que todos los lectores encuentren también en este libro un buen compañero para aprender o repasar los fundamentos, desde la arquitectura hasta los consejos para elentorno de producción.
Cómo está organizado este libro
Presentamos muchos temas, desde el proceso básico de instalación, el diseño de la base de datos, las copias de seguridad y la recuperación, hasta el análisis del rendimiento de la CPU y la investigación de errores. Hemos dividido el libro en cuatro partes principales:
-
Empezar con MySQL
-
Utilizar MySQL
-
MySQL en producción
-
Temas varios
Veamos cómo hemos organizado los capítulos.
Empezar con MySQL
El Capítulo 1, Instalación de MySQL, explica cómo instalar y configurar el software MySQL en distintos sistemas operativos. Este capítulo proporciona muchos más detalles que la mayoría de los libros. Sabemos que quienes se inician en MySQL a menudo no están familiarizados con las distintas distribuciones de Linux ni con las opciones de instalación, y ejecutar el "hola mundo" de MySQL requiere muchos más pasos que compilar un hola mundo en cualquier lenguaje de programación. Verás cómo configurar MySQL en Linux, Windows, macOS y Docker, y cómo implementar instancias rápidamente para realizar pruebas.
Utilizar MySQL
Antes de sumergirnos en la creación y el uso de bases de datos, veremos el diseño adecuado de bases de datos en el Capítulo 2, Modelado y diseño de bases de datos. Aprenderás a acceder a las funciones de tu base de datos y verás cómo se relacionan entre sí los elementos de información de tu base de datos. Verás que los malos diseños de bases de datos son difíciles de cambiar y pueden provocar problemas de rendimiento. Introduciremos el concepto de entidades fuertes y débiles y sus relaciones(claves externas) y explicaremos el proceso de normalización. Este capítulo también muestra cómo descargar y configurar ejemplos de bases de datos como sakila
, world
y employees
.
En el Capítulo 3, SQL básico, exploramos los famosos comandos SQL que forman parte de las operaciones CRUD (crear, leer, actualizar y eliminar). Verás cómo leer datos de una base de datos MySQL existente, almacenar datos en ella y manipular los datos existentes.
En el Capítulo 4, Trabajar con estructuras de base de datos, explicamos cómo crear una nueva base de datos MySQL y crear y modificar tablas, índices y otras estructuras de base de datos.
El Capítulo 5, Consultas avanzadas, cubre operaciones más avanzadas, como el uso de consultas anidadas y la utilización de diferentes motores de bases de datos MySQL. Este capítulo te dará la capacidad de realizar consultas más complejas.
MySQL en producción
Ahora que sabes cómo instalar MySQL y manipular datos, el siguiente paso es comprender cómo gestiona MySQL el acceso simultáneo a los mismos datos. Los conceptos de aislamiento, transacción y bloqueos se exploran en el Capítulo 6, Transacciones y bloqueos.
En el Capítulo 7, Hacer más con MySQL, verás consultas más complejas que puedes realizar en MySQL, así como la forma de observar el plan de consulta para comprobar si la consulta es eficiente o no. También explicaremos los distintos motores disponibles en MySQL (InnoDB y MyISAM son los más conocidos).
En el Capítulo 8, Gestión de usuarios y privilegios, aprenderás a crear y eliminar usuarios en la base de datos. Este paso es uno de los más importantes en términos de seguridad, ya que los usuarios con más privilegios de los que necesitan pueden causar daños considerables a la base de datos y a la reputación de la empresa. Verás cómo establecer políticas de seguridad, dar y quitar privilegios, y restringir el acceso a IPs de red específicas.
El Capítulo 9, Uso de los archivos de opciones, trata de los archivos de configuración de MySQL, o archivos de opciones, que contienen todos los parámetros necesarios para iniciar MySQL y optimizar su rendimiento. Quienes estén familiarizados con MySQL reconocerán el archivo de configuración /etc/my.cnf. También verás que es posible configurar el acceso de los usuarios utilizando archivos de opciones especiales.
Las bases de datos sin políticas de copias de seguridad están abocadas al desastre tarde o temprano. En el Capítulo 10, Copias de seguridad y recuperación, tratamos los distintos tipos de copias de seguridad(lógicas frente a físicas), las opciones disponibles para ejecutar esta tarea y las que son más apropiadas para grandes bases de datos de producción.
Enel Capítulo 11, Configurar y ajustar el servidor, se analizan los parámetros esenciales a los que debes prestar atención cuando configures un nuevo servidor. Proporcionamos fórmulas para ello y te ayudamos a identificar si el valor de un parámetro es el correcto para la carga de trabajo de la base de datos.
Temas varios
Una vez establecido lo esencial, es hora de ir más allá. El Capítulo 12, Monitorización de servidores MySQL, te enseña a monitorizar tu base de datos y a recopilar datos de ella. Dado que el comportamiento de la carga de trabajo de la base de datos puede cambiar según el volumen de usuarios, transacciones y datos que se manipulen, escrucial identificar qué recurso está saturado y cuál es la causa del problema.
El Capítulo 13, Alta disponibilidad, explica cómo replicar servidores para proporcionar alta disponibilidad. También introducimos el concepto de clúster, destacando dos soluciones: Cluster InnoDB y Cluster Galera/PXC.
El capítulo 14, MySQL en la nube, amplía el universo MySQL a la nube. Conocerás la opción de base de datos como servicio (DBaaS) y cómo utilizar los servicios gestionados de base de datos que ofrecen los tres proveedores de nube más destacados: Amazon Web Services (AWS), Google Cloud Platform (GCP) y Microsoft Azure.
En el Capítulo 15, Equilibrio de carga de MySQL, te mostraremos las herramientas más utilizadas para distribuir las consultas entre distintos servidores MySQL y extraer aún más rendimiento de MySQL.
Por último, el Capítulo 16, Temas Varios, presenta métodos y herramientas de análisis más avanzados, y un poco de programación. En este capítulo hablaremos de MySQL Shell, de los gráficos de llama y de cómo analizar errores.
Convenciones utilizadas en este libro
En este libro se utilizan las siguientes convenciones tipográficas:
- Cursiva
-
Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.
Constant width
-
Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.
Constant width bold
-
Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.
Constant width italic
-
Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.
Consejo
Este elemento significa un consejo o sugerencia.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
Utilizar ejemplos de código
Puedes descargarte ejemplos de código en https://github.com/learning-mysql-2nd/learning-mysql-2nd.
Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico a bookquestions@oreilly.com.
Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece un código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativa de código de ejemplo de este libro en la documentación de tu producto sí requierepermiso.
Agradecemos la atribución, pero en general no la exigimos. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Aprendiendo MySQL, 2ª ed., por Vinicius M. Grippa y Sergey Kuzmichev (O'Reilly). Copyright 2021 Vinicius M. Grippa y Sergey Kuzmichev, 978-1-492-08592-8".
Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en permissions@oreilly.com.
Aprendizaje en línea O'Reilly
Nota
Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.
Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.
Cómo contactar con nosotros
Dirige tus comentarios y preguntas sobre este libro a la editorial:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Norte
- Sebastopol, CA 95472
- 800-998-9938 (en Estados Unidos o Canadá)
- 707-829-0515 (internacional o local)
- 707-829-0104 (fax)
Tenemos una página web para este libro, donde se enumeran erratas, ejemplos, y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/learn-mysql-2e.
Envía un correo electrónico a bookquestions@oreilly.com para comentar o hacer preguntas técnicas sobre este libro.
Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.
Encuéntranos en Facebook: http://facebook.com/oreilly
Síguenos en Twitter: http://twitter.com/oreillymedia
Míranos en YouTube: http://youtube.com/oreillymedia
Agradecimientos
De Vinicius Grippa
Gracias a las siguientes personas que ayudaron a mejorar este libro: Corbin Collins, Charly Batista, Sami Ahlroos y Brett Holleman. Sin ellos, este libro no habría alcanzado la excelencia que perseguíamos.
Gracias a la comunidad MySQL (especialmente a Shlomi Noach, Giuseppe Maxia, Jeremy Cole y Brendan Gregg) y a todos los blogueros de Planet MySQL, Several Nines, Percona Blog y MySQL Entomologist que han aportado tanto material y tantas herramientas estupendas.
Gracias a todas las personas de Percona que me han facilitado los medios para escribir este libro, especialmente Bennie Grant, Carina Punzo y Marcelo Altmann, y que me han ayudado a crecer como profesional y ser humano.
Gracias al personal de O'Reilly que hace un trabajo tan elegante publicando libros y organizando conferencias.
Quiero dar las gracias a mis padres Divaldo y Regina, a mi hermana Juliana y a mi novia Karin por tener paciencia y apoyar este proyecto de muchas maneras. Un agradecimiento especial a Paulo Piffer, que me dio mi primera oportunidad de trabajar con lo que amo.
Y por último, a Sergey Kuzmichev, coautor de este libro. Sin su experiencia, dedicación y duro trabajo, este libro no habría sido posible. Estoy agradecido por tenerle como colega y por haber tenido el honor de trabajar con él en este proyecto.
De Sergey Kuzmichev
Me gustaría dar las gracias a mi mujer, Kate, por apoyarme y ayudarme en cada paso de este difícil pero gratificante proyecto. Desde rumiar si debía emprender la escritura de este libro, hasta muchos días a veces difíciles de escribirlo, ella estuvo ahí. Nuestro primer hijo nació mientras escribía el libro, y aun así Kate encontró tiempo y fuerzas para seguir motivándome y ayudándome.
Gracias a mis padres, familiares y amigos, que a lo largo de los años me han ayudado a crecer como persona y como experta. Gracias por apoyarme en este proyecto.
Gracias a la increíble gente de Percona por ayudarme con todas las preguntas y problemas técnicos y no técnicos que tuve mientras escribía este libro: Iwo Panowicz, Przemyslaw Malkowski, Sveta Smirnova y Marcos Albe. Gracias a Stuart Bell y a todos los miembros de la dirección de soporte de Percona por el increíble nivel de asistencia que recibimos en cada paso del camino.
Gracias a todos en O'Reilly por guiarnos y ayudarnos a crear esta edición. Gracias a Corbin Collins por ayudarnos a moldear la estructura del libro y mantenernos firmes en nuestro camino. Gracias a Rachel Head por encontrar innumerables problemas durante la fase de corrección y por detectar problemas con los detalles técnicos de MySQL en nuestros escritos. Sin ti, y sin todo el mundo en O'Reilly, este libro no sería un libro, sino simplemente una colección de palabras vagamente relacionadas.
Un agradecimiento especial a nuestros editores técnicos Sami Ahlroos, Brett Holleman y Charly Batista. Han contribuido decisivamente a que los contenidos técnicos y no técnicos de este libro sean de la máxima calidad.
Gracias a todos los miembros de la comunidad MySQL por ser abiertos, serviciales y compartir sus conocimientos de todas las formas posibles. El mundo de MySQL no es un jardín amurallado, sino que está abierto para todos. Me gustaría mencionar a Valerii Kravchuk, Mark Callaghan, Dimitri Kravchuk y Jeremy Cole por ayudarme a través de sus blogs a comprender mejor los aspectos internos de MySQL.
Quiero dar las gracias a los autores de la primera edición de este libro: Hugh E. Williams y Seyed M.M. Tahaghoghi. Hemos construido este proyecto sobre una base sólida gracias a su trabajo.
Por último, pero no por ello menos importante, me gustaría dar las gracias a Vinicius Grippa por ser un gran coautor y colega. Éste no sería el mismo libro sin él.
Dedico esta edición a mi hijo Grigorii.
Get Aprender MySQL, 2ª Edición now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.