Servicios de base de datos MySQL y PostgreSQL en Azure

Completado

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

En el caso de una empresa start-up, las bases de datos que se ejecutan actualmente en bases de datos MySQL y PostgreSQL locales son críticas, pero están limitadas por el tamaño del centro de datos y el tamaño del equipo de administración. Desea investigar si puede abordar estas limitaciones mediante los servicios de Azure y, si es así, qué servicios satisfacen mejor sus necesidades.

Aquí obtendrá información sobre Azure Database for MySQL, Azure Database for MariaDB, Azure Database for PostgreSQL y las opciones de implementación que puede usar con ellos. También conocerá las ventajas de la ejecución de bases de datos de código abierto en máquinas virtuales o contenedores de Azure y el enfoque de la 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 es alta. Por ejemplo, en el caso de Azure Database for PostgreSQL, Microsoft garantiza una disponibilidad del 99,99 % sin ningún costo adicional. Puede usar el servidor flexible para conseguir incluso más disponibilidad.

Si quiere 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 pueda redirigir las consultas si se produce un error en el servidor.
  • Una red de área de almacenamiento que comparta datos entre servidores o una manera de replicar datos entre servidores.
  • Hardware de red resistente.
  • Un centro de datos controlado por el entorno.
  • Sistemas de alimentación ininterrumpida y generadores de copias de seguridad.

Todos estos componentes son caros, y su implementación y ejecución exige conocimientos. Además, consumirían grandes recursos administrativos. Con Azure, estos requisitos ya están resueltos; solo tiene que crear la base de datos, y la alta disponibilidad estará 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, tiene que adquirir el hardware, instalar el sistema operativo y los programas de software necesarios, aplicar las actualizaciones y, a continuación, agregar los datos a la nueva instancia de la base de datos. Todas estas cosas llevan 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 inferior. En una configuración local, tiene que diseñar el sistema para estos picos. Esto significa que el sistema está infrautilizado la mayor parte del tiempo, pero las facturas se siguen acumulando y se requiere mantenimiento.

Estos desafíos son mucho más fáciles de solucionar en la nube. Si el sistema alcanza su capacidad, puede responder muy rápido, por ejemplo, cambiando a un nivel de servicio mayor o agregando máquinas virtuales. Si la demanda cae, podrá ahorrar dinero rápidamente si quita capacidad. En Azure, solo paga por la capacidad que use.

IaaS y PaaS

Puede elegir entre al menos dos enfoques al implementar una base de datos en Azure, según el nivel de control que necesite:

  • Infraestructura como servicio (IaaS). Si elige el enfoque de IaaS, Azure ejecuta la infraestructura física automáticamente. Cree máquinas virtuales y redes virtuales para conectarlas y, después, 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 del entorno 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 o mantenimiento en estos componentes. Por ejemplo, Azure aplica los Service Pack de forma automática. Puede centrarse en la administración de las bases de datos. Entre las ofertas de PaaS para ejecutar bases de datos de código abierto en Azure se incluyen Azure Database for MySQL, Azure Database for MariaDB y Azure Database for PostgreSQL.

¿Cuáles son los servicios de base de datos de Azure 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. También puede 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 desea que dediquen tiempo a aprender un sistema nuevo, el uso de Azure Database for MySQL, Azure Database for MariaDB o Azure Database for PostgreSQL permite al personal usar los conocimientos que ya tiene. Azure Database for MySQL, Azure Database for MariaDB y Azure Database for PostgreSQL son sistemas PaaS, por lo que no tiene que preocuparse por la arquitectura o la implementación de redes o servidores virtuales.

¿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 la 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 for MySQL con la opción Servidor flexible

Azure Database for MySQL: el servidor flexible proporciona mayor disponibilidad al replicar las bases de datos en varias zonas de disponibilidad. También 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 para responder a la adquisición de MySQL por parte de Oracle. Azure Database for MariaDB es la implementación de PaaS de MariaDB en la nube de Azure.

MariaDB se ha diseñado para sustituir MySQL, para que pueda reemplazar una base de datos MySQL con una base de datos MariaDB sin tener que recodificar de forma amplia las aplicaciones cliente ni los cambios en el esquema de la base de datos. Muchas de las características de MariaDB son las mismas que en MySQL, por ejemplo:

  • Índices y estructuras de la base de datos
  • Comandos de definición de datos
  • API, estructuras y protocolos 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 a las de MariaDB en Azure Database for MariaDB. Existen algunas diferencias entre los sistemas. Por ejemplo, MariaDB admite el almacén de columnas y Redis Cache, y ambos 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 de forma conjunta en este curso.

Importante

En el momento de escribir este documento, no hay ninguna opción de implementación del 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 dicho servidor de bases de datos en la nube de Azure. Proporciona las mismas ventajas de disponibilidad, rendimiento, escalado, seguridad y administración que el servicio MySQL.

Puede elegir entre dos tres de implementación:

Azure Database for PostgreSQL con la opción Servidor flexible

El servidor flexible de Azure Database for PostgreSQL ofrece ventajas similares a las del servidor flexible de MySQL. Puede usarlo para proporcionar los niveles máximos de disponibilidad y cómodos reinicios.

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 tener mayor control de los sistemas operativos y el software subyacente al sistema.

Sin embargo, hay varios enfoques que puede adoptar para implementar el enfoque de IaaS, en función de sus requisitos y de 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, ya que se crea una máquina virtual para cada servidor en el 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, debe seguir un proceso paso a paso para la migración. Las partes del sistema se mueven incrementalmente 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 reviértalo si es necesario.

Uso de máquinas virtuales precompiladas

Marketplace incluye máquinas virtuales preconfiguradas para servidores MySQL, MariaDB y PostgreSQL. Estas imágenes ahorran tiempo, ya que no es necesario que instale el software del servidor de bases de datos. Cuando configure máquinas virtuales de bases de datos, compruebe si hay una imagen en Marketplace con la versión correcta del software de bases 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 de su elección e incluso la propia base de datos. Para más información, vea 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 puede 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 más en un equipo host e iniciar los nuevos con más rapidez. Sin embargo, no puede ejecutar un contenedor de Linux en una máquina Windows, por ejemplo, porque el sistema operativo está compartido. Para ejecutar contenedores en un servidor físico, necesita el software de host de contenedor, como Docker. Los contenedores se implementan a partir de imágenes y, al igual que las máquinas virtuales, esas imágenes pueden incluir software de base de datos, como MySQL, MariaDB y PostgreSQL.

Si desea ejecutar un pequeño número 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.