Configura Cloud SQL para MySQL a fin de ser usado en la producción

En este documento se explica cómo configurar Cloud SQL para PostgreSQL a fin de usarlo en la producción. Cloud SQL para PostgreSQL es un servicio de RDBMS completamente administrado que está integrado en el ecosistema de Google Cloud. Cloud SQL para PostgreSQL tiene varias funciones y características clave:

  • Entrega a varias aplicaciones y usuarios a nivel global mediante las funciones de seguridad administradas de Google Cloud, como VPC y la encriptación automática de datos en reposo y en tránsito.
  • Admite la arquitectura de alta disponibilidad mediante instancias principales y en espera, y la conmutación por error automática entre ellas.
  • Admite cargas de trabajo de bases de datos distribuidas mediante la habilitación de la separación de lectura y escritura entre el nodo principal y las réplicas de lectura en el mismo clúster de base de datos
  • Admite copias de seguridad automáticas integradas en Cloud Storage y mantenimiento automático de bases de datos.
  • Admite una variedad de cargas de trabajo de procesamiento de transacciones en línea (OLTP).

Crea una instancia de Cloud SQL para PostgreSQL.

Puedes configurar una instancia de Cloud SQL para PostgreSQL en pocos pasos con la consola de Google Cloud o Google Cloud CLI. Ambos métodos se describen aquí.

Console

  1. En la consola de Google Cloud, ve a la página SQL>Instancias.

    Ir a Instancias

  2. Haz clic en Crear instancia y, luego, en Elegir MySQL.

  3. En la página Crear una instancia de PostgreSQL, proporciona los siguientes detalles:

    • ID de instancia: Ingresa un nombre para la instancia. El nombre de la instancia es permanente y no se puede cambiar más adelante.
    • Contraseña de usuario predeterminada: Elige la contraseña de usuario de postgres como la cuenta de administrador predeterminada. (Puedes crear usuarios adicionales después de la implementación de la instancia de PostgreSQL).
    • Región y Zona: Selecciona una región y una zona. Se recomienda implementar la instancia de PostgreSQL en la misma región donde están los servicios de Google Cloud asociados (por ejemplo, aplicaciones) o en una ubicación geográfica cercana a los usuarios para reducir la latencia en el procesamiento de datos. Una vez que seleccionas una región, no puedes modificarla más adelante.
    • Versión de la base de datos: Elige la versión más reciente o, si la necesitas, la versión más reciente disponible.
  4. Haz clic en Crear para implementar la instancia de PostgreSQL. También puedes hacer clic en Mostrar opciones de configuración para establecer parámetros de configuración adicionales.

    Crea una instancia de PostgreSQL

    • Opciones de configuración adicionales

      • Conectividad: Por lo general, conectas la instancia de PostgreSQL a la red a través de una dirección IP pública, una dirección IP privada y redes autorizadas. Las redes autorizadas son conexiones permitidas que puedes configurar para establecer una conexión remota, por ejemplo, la aprobación de una conexión desde una dirección IP específica de un cliente.

        Configuración de una conexión de red.

      • Tipo de máquina y almacenamiento: elige el tipo de máquina según los recursos asignados (CPU virtuales, RAM), el tipo de almacenamiento (SSD o HDD) y la capacidad de almacenamiento. El aumento de la capacidad de almacenamiento también aumenta la capacidad de procesamiento del disco compatible (MB/s) y las IOPS de lectura y escritura de tu base de datos. Ajusta la capacidad de almacenamiento según los requisitos esperados de capacidad de procesamiento y IOPs del disco.

        Capacidad de almacenamiento a 10 GB.Capacidad de almacenamiento a 100 GB

      • Copias de seguridad automáticas y alta disponibilidad: Usa la función de copias de seguridad automáticas, que está habilita de forma predeterminada, para definir el período en el que se realizarán copias de seguridad automáticas. Además, la opción de recuperación de un momento determinado, que usa registros de escritura por adelantado, también es necesaria para crear una réplica de lectura. Estos registros se actualizan periódicamente y usan espacio de almacenamiento. Para evitar problemas de almacenamiento inesperados, recomendamos habilitar los aumentos de almacenamiento automáticos cuando se usa la recuperación de un momento determinado. La alta disponibilidad está inhabilitada de forma predeterminada (multizona). Para habilitar la conmutación por error automática, selecciona la opción Alta disponibilidad (regional).

      • Marcas: Esta configuración especifica el método de Cloud SQL para controlar la configuración y los parámetros de tu instancia. Es equivalente al archivo postgresql.conf de una instancia de PostgreSQL no administrada. Para obtener una lista completa, consulta la documentación del producto. Para cambiar el valor de una marca o configurar una marca nueva, es posible que debas reiniciar la instancia.

      • Mantenimiento: en esta sección, se especifica el plazo que prefieras para realizar tareas de mantenimiento, incluidas las correcciones de errores y las actualizaciones de versiones secundarias. Ten en cuenta que las operaciones de mantenimiento, por lo general, requieren reiniciar la instancia y pueden causar una interrupción breve del servicio. Puedes registrarte para recibir una notificación por correo electrónico sobre los próximos eventos de mantenimiento.

      • Etiquetas: En esta sección, debes definir los pares clave-valor para clasificar tu instancia de PostgreSQL, como se muestra en el siguiente ejemplo:

        Definir pares clave-valor que clasifiquen tu instancia de PostgreSQL.

gcloud

  1. Crea la instancia de PostgreSQL:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 --zone=us-central1-a
    
  2. Asigna una contraseña para el usuario predeterminado de PostgreSQL (ejemplo de sintaxis):

    gcloud sql users set-password postgres \
        --instance INSTANCE_NAME \
        --password PASSWORD
    

    Puedes especificar estas opciones adicionales:

    • Versión de la base de datos: Una de las versiones de PostgreSQL compatibles.
    • Tipo de almacenamiento: SSD o HDD como el tipo de almacenamiento.
    • Capacidad de almacenamiento: La configuración de almacenamiento inicial para la instancia.
    • Aumento de almacenamiento automático: la automatización de Cloud SQL para agregar almacenamiento adicional cuando se queda sin espacio libre
    • Alta disponibilidad: alta disponibilidad en Cloud SQL
    • Copias de seguridad automáticas: el período de inicio de las copias de seguridad
    • Recuperación de un momento determinado: recuperación de un momento determinado y registro de escritura por adelantado
    • Período de mantenimiento: un período de una hora durante el cual Cloud SQL puede realizar un mantenimiento disruptivo
    • Horario de mantenimiento: el momento preferido para realizar actualizaciones en la instancia de PostgreSQL Puedes especificar la vista previa para las actualizaciones anteriores o producción para las actualizaciones posteriores.
    • Marcas de la base de datos: las marcas de la base de datos de PostgreSQL para controlar la configuración y los parámetros

    El siguiente comando gcloud crea una instancia de Cloud SQL para PostgreSQL con algunas opciones adicionales:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 \
        --zone=us-central1-a \
        --database-version=POSTGRES_12 \
        --storage-type=SSD \
        --storage-size=100 \
        --storage-auto-increase \
        --availability-type=regional \
        --backup-start-time=23:30 \
        --enable-point-in-time-recovery \
        --maintenance-window-day=sun \
        --maintenance-window-hour=11 \
        --maintenance-release-channel=production \
        --database-flags max_connections=100
    

    Para obtener más información, consulta Crea instancias.

Selección de instancia

La selección o el tamaño de la instancia incluyen la selección de un tipo de máquina que puede admitir la carga de trabajo de Oracle en Cloud SQL para PostgreSQL. Los tipos de instancias se dividen en tres grupos principales:

  • Máquinas de núcleo compartido: son rentables.
  • Instancias con núcleo dedicado: Admiten varias proporciones de CPU virtuales y memoria.

Para obtener más información sobre los tipos de instancias, consulta Precios de Cloud SQL.

Para calcular el tamaño de tu instancia, comienza por analizar los recursos asignados y usados por la base de datos fuente. Puedes obtener la configuración de los recursos de la base de datos de Oracle desde la vista del sistema V$OSSTAT o desde un informe de Oracle AWR (consulta los siguientes ejemplos):

Memoria física (cantidad de bytes de memoria física en el servidor de base de datos):

SQL> SELECT ROUND(MAX(VALUE)/1024/1024/1024) AS MEM_SIZE_GB
     FROM V$OSSTAT
     WHERE STAT_NAME = 'PHYSICAL_MEMORY_BYTES';

Memoria asignada:

SQL> SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER
     WHERE NAME LIKE '%sga%' OR NAME LIKE '%memory%';

Núcleos de CPU (cantidad de núcleos de CPU disponibles):

SQL> SELECT VALUE FROM V$OSSTAT
     WHERE STAT_NAME = 'NUM_CPU_CORES';

Núcleos de CPU (identificados por una instancia de Oracle con la vista V$LICENSE):

SQL> SELECT CPU_CORE_COUNT_CURRENT FROM V$LICENSE;

Ejemplo de recurso de informe de Oracle AWR (un informe de Oracle AWR puede proporcionar estadísticas adicionales sobre las características de la carga de trabajo de una instancia de Oracle específica):

Ejemplo de recurso de informe AWR de Oracle.

Cuando tengas la información de recursos de tu base de datos fuente, te recomendamos elegir el tipo de instancia de Cloud SQL que coincida mejor y ejecutar algunas comparativas. Los resultados de las comparativas te ayudarán a finalizar la selección de tu instancia.

Configuración de alta disponibilidad

Para implementar una solución de recuperación ante desastres, similar a Data Guard de Oracle, Cloud SQL para MySQL ofrece capacidades de alta disponibilidad, lo que proporciona una conmutación por error automática de la instancia principal del clúster a su instancia en espera. La instancia en espera se encuentra en una zona diferente en la misma región que la instancia principal. La instancia en espera se mantiene sincronizada mediante la replicación síncrona entre los discos persistentes de las instancias principal y en espera. Este método garantiza que todas las modificaciones de datos de la instancia principal también se apliquen a la instancia en espera.

En caso de que se produzca una falla principal, como una instancia que no responde o una falla a nivel de la zona, Cloud SQL realiza una conmutación por error automática. La instancia principal se supervisa mediante señales de monitoreo de funcionamiento, que se producen en intervalos de 1 segundo, y se activa una conmutación por error tras 60 segundos sin recibir señales de monitoreo de funcionamiento desde la instancia principal. En este punto, la instancia principal se conmuta por error a la instancia en espera, lo que proporciona acceso de datos a las aplicaciones o a los clientes de forma transparente, mientras las réplicas de lectura existentes permanecen operativas. Ten en cuenta que, a diferencia de Active Data Guard, la instancia en espera no está abierta para lecturas mientras actúa en modo de espera. Con Cloud SQL, solo las réplicas de lectura se pueden usar para descargar lecturas de la instancia principal.

Puedes habilitar la función de alta disponibilidad (HA) de Cloud SQL para PostgreSQL cuando creas la instancia o en una instancia existente de PostgreSQL. A continuación, se indican los pasos que debes seguir:

Console

  1. En la página de creación de instancias, haz clic en Mostrar opciones de configuración > Copias de seguridad automáticas y alta disponibilidad > Disponibilidad y, a continuación, selecciona la opción Alta disponibilidad (regional).
  2. En una instancia existente de PostgreSQL, edita la instancia de PostgreSQL mediante el paso anterior. Esto requiere que reinicies la base de datos.
  3. A fin de iniciar una conmutación por error para fines de prueba, ve a la página de Cloud SQL y haz clic en Conmutación por error.

    Iniciar una conmutación por error para realizar pruebas.

    Puedes habilitar la conmutación por recuperación de la misma manera.

gcloud

  1. Para habilitar el atributo de alta disponibilidad, establece el parámetro availability-type en regional:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 \
        --zone=us-central1-a \
        --availability-type=regional
    
  2. Verifica si una instancia de PostgreSQL existente está configurada con el atributo de alta disponibilidad:

    gcloud sql instances describe INSTANCE_NAME
    

    Si el resultado de este comando incluye availabilityType: REGIONAL, el atributo de alta disponibilidad ya está habilitado. Si el resultado incluye availabilityType: ZONAL, el atributo de alta disponibilidad no está configurado y se puede habilitar con el comando patch:

    gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
    
  3. Inicia una prueba de conmutación por error desde la instancia principal a la instancia en espera:

    gcloud sql instances failover PRIMARY_INSTANCE_NAME
    

    Para realizar una conmutación por recuperación, ejecuta el mismo comando de conmutación por error en la instancia principal nueva.

Usuarios y cuentas de administración

Dos cuentas de usuario predeterminadas de PostgreSQL vienen con cualquier instalación de Cloud SQL para PostgreSQL. Estas cuentas son postgres y cloudsqlimportexport.

Cuenta postgres

La cuenta postgres es la cuenta de administrador y equivale a los usuarios SYS o SYSTEM de Oracle en Cloud PaaS. Debido a que Cloud SQL para PostgreSQL es un servicio administrado, el usuario postgres, a diferencia de los usuarios de Oracle SYS o SYSTEM, no puede acceder a ciertas tablas y procedimientos del sistema que requieren privilegios avanzados.

El usuario postgres es parte de la función cloudsqlsuperuser y tiene los siguientes atributos (privilegios): CREATEROLE, CREATEDB y LOGIN. No tiene los atributos SUPERUSER o REPLICATION.

Cuenta cloudsqlimportexport

La cuenta cloudsqlimportexport se crea con el conjunto mínimo de privilegios necesarios para las operaciones de importación y exportación de CSV. Puedes crear tus propios usuarios para realizar estas operaciones. Sin embargo, si no lo haces, se usa el usuario cloudsqlimportexport predeterminado. El usuario cloudsqlimportexport es un usuario del sistema y no puedes usarlo de forma directa.

Administración de cuentas (agregar, borrar o cambiar la contraseña)

La administración de cuentas implica crear cuentas de usuario nuevas, modificar la contraseña de una cuenta existente y borrar una cuenta que ya no se necesita. Puedes realizar estas operaciones de cuentas a través de la consola de Google Cloud, la herramienta de gcloud o el cliente de PostgreSQL.

Console

  1. Enumera las cuentas existentes desde la consola de Google Cloud: Ve a Consola de Cloud SQL > Selecciona instancia de PostgreSQL > Usuarios.

    Enumeración de las cuentas existentes.

  2. Para modificar la contraseña de la cuenta o borrar la cuenta por completo, haz clic en el ícono de tres puntos (Más) ubicado junto a la cuenta.

    Desde esta pantalla, puedes hacer clic en Crear cuenta de usuario para crear un usuario de PostgreSQL nuevo.

    Modificación de la contraseña y eliminación de una cuenta.

gcloud

  1. Enumera las cuentas de usuario existentes:

    gcloud sql users list --instance=postgresql01
    

    El resultado es similar al siguiente:

    NAME       HOST
    Postgres
    
  2. Crea la cuenta de usuario appuser, establece la contraseña y borra appuser:

    gcloud sql users create appuser \
        --instance=postgresql01 --password=PASSWORD
    
    gcloud sql users set-password appuser \
        --host=% --instance=postgresql01 --prompt-for-password
    
    gcloud sql users delete appuser --instance=postgresql01
    

PostgreSQL

  • Realiza estas mismas acciones directamente desde un cliente PostgreSQL estándar, por ejemplo:

    postgres=> create user appuser with login password 'my_password';
    
    postgres=> alter user appuser password 'my_password';
    
    postgres=> drop user appuser;
    

    Puedes configurar los permisos a nivel de base de datos de PostgreSQL (por ejemplo, leer desde una tabla o vista específica) mediante los comandos GRANT/REVOKE mediante el cliente PostgreSQL.

Supervisión y alertas

Cloud Logging es la herramienta de registro principal en Google Cloud. Se usa a fin de recopilar y ver una variedad de registros de supervisión para recursos como Cloud SQL para PostgreSQL.

Cloud Logging te permite ver los registros de Cloud SQL para PostgreSQL filtrados por nivel de evento (por ejemplo, Crítico, Error o Advertencia), período de evento y búsqueda de texto libre, como se muestra en la siguiente captura de pantalla.

Visualiza registros en Cloud Logging.

Supervisión de instancias de base de datos de PostgreSQL

Las principales herramientas de supervisión de Oracle son Enterprise Manager y Grid/Cloud Control. Estas herramientas te permiten realizar la supervisión de instancias de base de datos en tiempo real a nivel de la sesión de base de datos y a nivel de la instrucción de SQL.

Cloud SQL para PostgreSQL proporciona capacidades de supervisión comparables a través de la consola de Google Cloud. Desde allí, puedes obtener una vista resumida de las instancias de la base de datos, incluido el uso de CPU, el uso de almacenamiento, el uso de memoria, las operaciones de lectura y escritura, las conexiones activas, las transacciones por segundo y los bytes de entrada y salida. Ten en cuenta que Google Cloud Observability proporciona métricas adicionales de supervisión para Cloud SQL para PostgreSQL, como las solicitudes de conmutación por error automática y el retraso de replicación entre la réplica principal y la de lectura.

En el siguiente gráfico de ejemplo, se muestran las transacciones por segundo durante las últimas 6 horas:

Gráfico de transacciones por segundo de las últimas 6 horas.

Supervisa réplicas de lectura

Puedes supervisar réplicas de lectura a través de la consola de Google Cloud de la misma manera en que supervisas la instancia principal. Existen métricas específicas para verificar el estado de replicación entre las instancias principales y de réplica de lectura. Estas métricas se usan para propagar la página de descripción general de la instancia de réplica de lectura en la consola de Google Cloud.

Como alternativa, puedes verificar el estado de replicación desde la línea de comandos:

gcloud sql instances describe REPLICA_NAME

Una tercera opción es verificar el estado de la replicación a través de un cliente PostgreSQL. El siguiente comando de PostgreSQL verifica el estado de la réplica de lectura:

postgres=> \x on
Expanded display is on.
postgres=> select * from pg_stat_replication;
-[ RECORD 1 ]----+-------------------------------------------
pid              | 74733
usesysid         | 16388
usename          | cloudsqlreplica
application_name | PROJECT_ID:REPLICA_NAME
client_addr      | REPLICA_IP
client_hostname  |
client_port      | 41660
backend_start    | 2020-09-28 06:59:38.783981+00
backend_xmin     |
state            | streaming
sent_lsn         | 0/2939FFA8
write_lsn        | 0/2939FFA8
flush_lsn        | 0/2939FFA8
replay_lsn       | 0/2939FFA8
write_lag        |
flush_lag        |
replay_lag       |
sync_priority    | 0
sync_state       | async
reply_time       | 2020-09-28 07:17:52.714969+00
postgres=>

Supervisión de la base de datos de PostgreSQL

En esta sección, se describen algunas tareas de supervisión adicionales que se consideran de rutina para un DBA de PostgreSQL.

Supervisión de la sesión

Las sesiones de Oracle se supervisan mediante consultas a las vistas de rendimiento dinámico conocidas como vistas "V$". Las vistas V$SESSION y V$PROCESS suelen usarse para obtener estadísticas en tiempo real sobre la actividad actual de la base de datos a través de instrucciones de SQL. Puedes supervisar la actividad de la sesión en PostgreSQL de manera similar, a través de los comandos de PostgreSQL y de instrucciones de SQL.

La vista dinámica pg_stat_activity de PostgreSQL proporciona información detallada sobre la actividad actual de la sesión de la base de datos:

postgres=> \x on
postgres=> select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin';
-[ RECORD 1 ]----+-----------------------------------------------------------------------------------------------------
datid            | 14052
datname          | postgres
pid              | 74750
usesysid         | 16389
usename          | postgres
application_name | psql
client_addr      | CLIENT_IP
client_hostname  |
client_port      | 51904
backend_start    | 2020-09-28 07:01:30.214099+00
xact_start       | 2020-09-28 07:28:48.982115+00
query_start      | 2020-09-28 07:28:48.982115+00
state_change     | 2020-09-28 07:28:48.982117+00
wait_event_type  |
wait_event       |
state            | active
backend_xid      |
backend_xmin     | 88513
query            | select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin';
backend_type     | client backend
postgres=>

Supervisión de transacciones extensas

Para identificar las transacciones de larga duración que pueden generar problemas de rendimiento, consulta la vista dinámica pg_stat_activity. Para identificar las consultas de larga duración, aplica los filtros adecuados en columnas como query_start y state.

Bloquea la supervisión

Puedes supervisar los bloqueos de la base de datos a través de la vista dinámica pg_locks, que proporciona información en tiempo real sobre cualquier contención de bloqueo que pueda causar problemas de rendimiento.

Alertas

Puedes usar las alertas además de la supervisión y el registro. También puedes crear alertas sobre condiciones.

Escalamiento

Cloud SQL para PostgreSQL admite opciones de escalamiento vertical y horizontal.

Puedes escalar verticalmente si agregas más recursos a la instancia de Cloud SQL, como aumentar la cantidad de CPU y memoria que asigna la instancia. La capacidad de procesamiento de la red de tu instancia depende de los valores que elijas para la CPU y la memoria.

Cloud SQL admite hasta 30 TB de espacio de almacenamiento. Por lo general, agregar capacidad de almacenamiento aumenta la capacidad de procesamiento y las IOPS de disco de una instancia. Ten en cuenta que la capacidad de procesamiento de la red de una instancia de Cloud SQL incluye lecturas y escrituras de tus datos (capacidad de procesamiento de disco), así como el contenido de las consultas, los cálculos y otros datos que no están almacenados en tu base de datos. Es importante tener en cuenta estos factores cuando escalas verticalmente tu instancia de Cloud SQL.

Para escalar horizontalmente, crea réplicas de lectura. Las réplicas de lectura te permiten escalar tus cargas de trabajo de lectura en instancias de Cloud SQL separadas sin afectar el rendimiento y la disponibilidad de la instancia principal.

Copia de seguridad y recuperación

Existen dos métodos de copia de seguridad de bases de datos en Cloud SQL para PostgreSQL: a pedido y automatizada. Puedes realizar copias de seguridad a pedido en cualquier momento y se conservarán hasta que las borres. Las copias de seguridad automáticas usan un período de copia de seguridad de 4 horas y se conservan durante 7 días.

Puedes restablecer las copias de seguridad de la base de datos de Cloud SQL para PostgreSQL a la misma instancia, lo que reemplaza los datos existentes, o a una instancia nueva. Además, Cloud SQL para PostgreSQL te permite restablecer una base de datos de PostgreSQL de un momento determinado siempre que la recuperación de un momento determinado esté activada y la opción de copia de seguridad automática esté habilitada.

Cloud SQL para PostgreSQL proporciona funciones de clonación de bases de datos. La clonación debe crearse a partir de la instancia principal (es decir, no se puede crear a partir de una réplica). Puedes ejecutar copias de seguridad, restablecimientos y clonaciones de bases de datos desde la consola de Google Cloud o gcloud CLI.

Automatización

Puedes usar la API de Cloud SQL Admin para automatizar por completo la administración de una instancia de Cloud SQL para PostgreSQL. La API de Cloud SQL Admin es una API de REST que permite controlar diferentes tipos de recursos, como instancias, bases de datos, usuarios, marcas, operaciones, SslCerts, niveles y BackupRuns. Para obtener más información, consulta la documentación de la API.

¿Qué sigue?