Servicios de base de datos MySQL y PostgreSQL en Azure

Completado

Si tiene una base de datos local funcional, ¿por qué debe considerar la posibilidad de moverla a un servicio en la nube, como Azure? De forma similar, ¿por qué considerar la posibilidad de implementar un nuevo sistema de base de datos en Azure? Muchas organizaciones realizan esta migración porque es fácil y relativamente barato crear un servicio de alta disponibilidad y escalable en la nube, en comparación con el uso de un centro de datos local.

En el caso de la empresa de inicio, las bases de datos que se ejecutan actualmente en MySQL y PostgreSQL local son críticas, pero limitadas por el tamaño del centro de datos y el tamaño del equipo de administración. Quiere investigar si puede abordar estas limitaciones mediante el uso de servicios de Azure y, si es así, qué servicios son más adecuados para sus necesidades.

Aquí obtendrá información sobre Azure Database for MySQL, Azure Database for MariaDB y Azure Database for PostgreSQL y las opciones de implementación que puede usar con ellos. También obtendrá información sobre las ventajas de ejecutar bases de datos de código abierto en máquinas virtuales o contenedores en Azure y el enfoque infraestructura como servicio (IaaS).

Disponibilidad

La disponibilidad garantizada por los acuerdos de nivel de servicio (SLA) de Azure depende de los detalles precisos de la implementación, pero siempre son altos. Por ejemplo, en el caso de Azure Database for PostgreSQL, Microsoft garantiza una disponibilidad del 99,99 % sin ningún costo adicional. Para obtener una mayor disponibilidad, puede usar el servidor flexible.

Si desea lograr esta disponibilidad en una red local, tendría que diseñar un sistema resistente a los errores de hardware. Necesitaría lo siguiente:

  • Varios servidores físicos.
  • Un equilibrador de carga que podría volver a enrutar las consultas si se produce un error en el servidor.
  • Una red de área de almacenamiento que comparte datos entre servidores o una manera de replicar datos entre servidores.
  • Hardware de red resistente.
  • Un centro de datos controlado ambientalmente.
  • Fuentes de alimentación ininterrumpibles y generadores de respaldo.

Todos estos componentes son costosos y requieren aptitud para implementar y ejecutar. También consumirían recursos administrativos importantes. Con Azure, estos requisitos ya están resueltos; solo tiene que crear la base de datos y la alta disponibilidad está integrada.

Escalabilidad

Si la base de usuarios crece, la demanda del sistema crece con ella. Cada sistema local tiene una capacidad máxima, si se aproxima a ese límite, debe aumentarlo agregando más hardware. No se puede agregar capacidad de forma instantánea. En su lugar, debe comprar el hardware, instalar el sistema operativo y el software necesarios, aplicar actualizaciones y, a continuación, agregar los datos a la nueva instancia de base de datos. Todas estas cosas tardan tiempo.

Recuerde también que la alta demanda suele ser temporal. Por ejemplo, si ejecuta una campaña de marketing correcta, es posible que vea un pico en el tráfico, seguido de un retorno a una demanda menor. En una configuración local, tiene que diseñar el sistema para estos picos. Esto significa que la mayor parte del tiempo el sistema está infrautilizado, pero sigue generando facturas y requiere mantenimiento.

Estos desafíos son mucho más fáciles de superar en la nube. Si el sistema alcanza su capacidad, puede responder muy rápidamente, por ejemplo, pasando a un nivel mayor o agregando máquinas virtuales. Si la demanda cae, ahorrará dinero rápidamente mediante la eliminación de la capacidad. En Azure, solo paga por la capacidad que usa.

IaaS y PaaS

Puede elegir entre al menos dos enfoques al implementar una base de datos en Azure, en función del nivel de control que necesite:

  • Infraestructura como servicio (IaaS). Si elige el enfoque de IaaS, Azure ejecuta la infraestructura física. Cree máquinas virtuales y redes virtuales para conectarlas y, a continuación, instale el software y los datos necesarios. Ejecutar una máquina virtual es como ejecutar un servidor físico. Mantiene el sistema operativo y el software, pero no tiene que preocuparse por el centro de datos, el control ambiental o las conexiones a Internet.
  • Plataforma como servicio (PaaS). Si elige el enfoque de PaaS, Azure ejecuta la infraestructura física, los servidores virtuales necesarios y el software de base de datos. No es necesario realizar tareas de configuración ni mantenimiento en estos componentes. Por ejemplo, Azure aplica los paquetes de servicios automáticamente. Puede concentrarse en la administración de bases de datos. Las ofertas de PaaS para ejecutar bases de datos de código abierto en Azure incluyen Azure Database for MySQL, Azure Database for MariaDB y Azure Database for PostgreSQL.

¿Cuáles son los servicios de Azure Database para MySQL, MariaDB y PostgreSQL?

Si tiene un sistema de base de datos local basado en MySQL, MariaDB o PostgreSQL, y desea trasladar la base de datos a la nube, considere la posibilidad de usar Azure Database for MySQL, Azure Database for MariaDB o Azure Database for PostgreSQL. Es posible que también quiera usar estos servicios para implementar nuevas bases de datos. Por ejemplo, si los desarrolladores y administradores de bases de datos tienen experiencia con esos servidores de bases de datos y no quiere que dediquen tiempo a aprender un nuevo sistema, use Azure Database for MySQL, Azure Database for MariaDB o Azure Database for PostgreSQL permite al personal usar sus conocimientos existentes. Azure Database for MySQL, Azure Database for MariaDB y Azure Database for PostgreSQL son sistemas PaaS, por lo que no tiene que preocuparse por diseñar ni implementar servidores virtuales o redes.

¿Qué es Azure Database for MySQL?

Azure Database for MySQL es una implementación de PaaS de MySQL en la nube de Azure que se basa en la edición Community de MySQL. Actualmente, puede seleccionar entre compatibilidad con las versiones 5.6, 5.7 y 8.0 de MySQL, en función de sus necesidades. Se proporcionará compatibilidad con versiones adicionales a medida que MySQL evolucione.

Azure Database for MySQL ofrece las siguientes características:

  • Características de alta disponibilidad integradas.
  • Rendimiento predecible.
  • Escalado sencillo que responde rápidamente a la demanda.
  • Protección de los datos, tanto en reposo como en movimiento.
  • Copias de seguridad automáticas y restauración a un momento dado de los últimos 35 días.
  • Seguridad de categoría empresarial y cumplimiento normativo.

El sistema usa el modelo de precios de pago por uso, por lo que solo paga por lo que usa.

Puede elegir entre dos opciones de implementación:

Azure Database para MySQL - Servidor flexible

Azure Database for MySQL: servidor flexible proporciona una mayor disponibilidad mediante la replicación de las bases de datos en varias zonas de disponibilidad. También le permite iniciar y detener el servicio de base de datos rápidamente para optimizar los costos.

Azure Database for MySQL proporciona un sistema de base de datos global que se puede escalar verticalmente a bases de datos grandes sin necesidad de administrar el hardware, los componentes de red, los servidores virtuales, las revisiones de software y otros componentes subyacentes.

¿Qué es Azure Database for MariaDB?

MariaDB es una bifurcación de MySQL creada por la comunidad en respuesta a la adquisición de MySQL por Oracle. Azure Database for MariaDB es la implementación de PaaS de MariaDB en la nube de Azure.

MariaDB está diseñado para ser un reemplazo para MySQL, de modo que pueda reemplazar una base de datos MySQL por una base de datos MariaDB sin una amplia recodificación de aplicaciones cliente o cambios en el esquema de la base de datos. Muchas características de MariaDB son las mismas que en MySQL, por ejemplo:

  • Estructuras e índices de base de datos
  • Comandos de definición de datos
  • Protocolos, estructuras y API de cliente
  • Los programas mysqldump y mysqladmin

Esta similitud entre MySQL y MariaDB significa que las tareas de migración de MySQL a Azure Database for MySQL son muy similares para MariaDB a Azure Database for MariaDB. Existen algunas diferencias entre los sistemas. Por ejemplo, MariaDB admite ColumnStore y Redis Cache, que se pueden usar para optimizar el rendimiento.

Nota:

Dado que la migración de bases de datos de MySQL y MariaDB a Azure es tan similar, se tratarán conjuntamente en este curso.

Importante

En el momento de escribir, no hay ninguna opción de implementación de servidor flexible para Azure Database for MariaDB.

¿Qué es Azure Database for PostgreSQL?

Si prefiere PostgreSQL, puede elegir Azure Database for PostgreSQL para obtener una implementación de PaaS de ese servidor de bases de datos en la nube de Azure. Esto proporciona la misma disponibilidad, rendimiento, escalado, seguridad y ventajas administrativas que el servicio MySQL.

Puede elegir entre tres opciones de implementación:

Azure Database for PostgreSQL - Servidor flexible

Servidor flexible de Azure Database for PostgreSQL proporciona ventajas similares al servidor flexible de MySQL. Puede usarlo para proporcionar los mayores niveles de disponibilidad y reinicios cómodos.

Opciones de IaaS para ejecutar MySQL, MariaDB y PostgreSQL en Azure

Use el enfoque de IaaS para replicar una arquitectura física en la nube. Puede elegir IaaS si desea conservar más control de los sistemas operativos y el software subyacentes al sistema.

Sin embargo, hay varios enfoques que puede adoptar para implementar el enfoque de IaaS, según sus requisitos y la complejidad de los sistemas existentes.

Migración mediante lift-and-shift

Un enfoque consiste en reflejar la arquitectura local en la nube mediante la creación de una infraestructura de red virtual que coincida con la del centro de datos: se crea una máquina virtual para cada servidor del sistema local. Instale y configure el software del sistema de administración de bases de datos (MySQL, MariaDB o PostgreSQL) en las máquinas virtuales. A continuación, migre mediante lift-and-shift el sistema a la nube con poca alteración del código o la configuración de cliente.

Con esta estrategia, se sigue un proceso paso a paso para la migración. Las partes del sistema se mueven de forma incremental a la nube, a la vez que se conservan otros elementos locales mediante la puerta de enlace de red de Azure. Use este enfoque híbrido para estabilizar el sistema en cada paso y revertirlo si es necesario.

Uso de máquinas virtuales preconstruidas

Marketplace incluye máquinas virtuales preconfiguradas para servidores MySQL, MariaDB y PostgreSQL. Estas imágenes ahorran tiempo porque usted mismo no tiene que instalar el software del servidor de bases de datos. Al configurar máquinas virtuales de base de datos, compruebe si hay una imagen en Marketplace con la versión correcta del software de base de datos y considere su uso.

También puede cargar una imagen de máquina virtual personalizada en Azure y usarla para crear máquinas virtuales. Esta imagen podría incluir el software de base de datos que prefiera e incluso la propia base de datos. Para más información, consulte Tutorial: Creación de una imagen personalizada de una máquina virtual de Azure con Azure PowerShell.

Uso de contenedores mySQL, MariaDB o PostgreSQL

Otra tecnología de virtualización que podría considerar es la contenedorización. Un contenedor es como una máquina virtual, pero comparte el sistema operativo con el equipo host. Los contenedores son más pequeños que las máquinas virtuales, por lo que puede ejecutar una mayor cantidad en un servidor e iniciar nuevos más rápidamente. Sin embargo, no se puede ejecutar un contenedor de Linux en una máquina Windows, por ejemplo, porque el sistema operativo se comparte. Para ejecutar contenedores en un servidor físico, necesita software host de contenedor, como Docker. Los contenedores se implementan a partir de imágenes y, como las máquinas virtuales, esas imágenes pueden incluir software de base de datos como MySQL, MariaDB y PostgreSQL.

Si quiere ejecutar pequeños números de contenedores en Azure, instale Docker en una máquina virtual. Como alternativa, si usa el servicio Container Instances, puede ejecutar contenedores en Azure sin configurar sus propias máquinas virtuales. Si desea administrar fácilmente un gran número de contenedores que necesitan comunicarse entre sí, use Azure Kubernetes Service.