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 para su uso en 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 capacidades de seguridad administradas de Google Cloud, incluidas la VPC y la encriptación de datos automática 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 la base de datos.
  • Admite una variedad de cargas de trabajo de procesamiento transaccional en línea (OLTP).

Crea una instancia de Cloud SQL para PostgreSQL.

Puedes configurar una instancia de Cloud SQL para PostgreSQL en unos pocos pasos mediante Google Cloud Console o la herramienta de línea de comandos de gcloud. Ambos métodos se describen aquí.

Console

  1. En Cloud Console, 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 Crea 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 que los servicios de Google Cloud asociados (por ejemplo, aplicaciones) o cerca de los usuarios a fin de reducir la latencia para procesamiento de datos. Una vez que selecciones una región, no podrás 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 disponible más reciente.
  4. Haz clic en Crear para implementar la instancia de PostgreSQL. También puedes hacer clic en Mostrar opciones de configuración para establecer configuraciones 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, aprobar una conexión desde una dirección IP específica desde 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á habilitada de forma predeterminada, para definir el período en el que deseas realizar las copias de seguridad. 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 use 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 los parámetros y la configuración 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. Cambiar el valor de una marca o configurar una marca nueva puede requerir que se reinicie 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, defines pares clave-valor para categorizar tu instancia de PostgreSQL, por ejemplo:

        Define pares clave-valor que categorizan 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 tipo de almacenamiento.
    • Capacidad de almacenamiento: la configuración inicial de almacenamiento 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

    Con el siguiente comando de gcloud, se 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 CPU virtuales y proporciones de 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 recursos de la base de datos de Oracle desde la vista del sistema V$OSSTAT o 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 AWR de Oracle (un informe de AWR de Oracle 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 PostgreSQL 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 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 la conmutación por error se activa después de 60 segundos de sin interrupciones. En este punto, la instancia principal falla a la instancia en espera, lo que proporciona acceso a los datos a las aplicaciones o clientes de manera 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 como un 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 para una instancia de PostgreSQL existente. 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. Para una instancia existente de PostgreSQL, edita la instancia de PostgreSQL mediante el paso anterior. Esto requiere que se reinicie 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.

    Inicia la conmutación por error para las pruebas.

    Puedes habilitar la conmutación por error 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 de PostgreSQL predeterminadas vienen con cualquier instalación de Cloud SQL para PostgreSQL. Estas cuentas son postgres y cloudsqlimportexport.

cuenta de 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 de 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 usará el usuario cloudsqlimportexport predeterminado. El usuario cloudsqlimportexport es un usuario del sistema, y los clientes no pueden 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 cuenta a través de Cloud Console, la herramienta de gcloud o el cliente de PostgreSQL.

Console

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

    Enumera las cuentas existentes.

  2. Modifica la contraseña de la cuenta o haz clic en el ícono de tres puntos (Más) ubicado junto a la cuenta para borrarla por completo.

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

    Modifica la contraseña y borra 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 estándar de PostgreSQL, 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 registros de Cloud SQL para PostgreSQL filtrados por nivel de evento (por ejemplo, crítico, error o advertencia), el período del evento y la búsqueda de texto libre, como se muestra en la siguiente captura de pantalla.

Visualiza registros en Cloud Logging.

Supervisión de instancias de la 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 Cloud Console. Desde allí, puedes obtener una vista resumida de las instancias de base de datos, incluido el uso de CPU, el uso del 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's operations suite 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 muestra un gráfico de las transacciones por segundo de las últimas 6 horas:

Grafo de transacciones por segundo para las últimas 6 horas

Supervisa réplicas de lectura

Puedes supervisar réplicas de lectura a través de Cloud Console 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 Cloud Console.

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 rutinas para una 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 una manera similar, tanto mediante los comandos de PostgreSQL como las instrucciones de SQL.

La vista dinámica pg_stat_activity de PostgreSQL proporciona información detallada sobre la actividad actual de la sesión en 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. Puedes identificar consultas de larga duración mediante la aplicación de 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 competencia de bloqueo que pueda generar problemas de rendimiento.

Alertas

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

Escalamiento

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

Escalas verticalmente mediante la adición de más recursos a la instancia de Cloud SQL, como aumentar el número de CPU y memoria asignados por 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 las operaciones de lectura y escritura 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 la base de datos. Es importante tener en cuenta estos factores cuando escalas verticalmente tu instancia de Cloud SQL.

Puedes escalar horizontalmente mediante la creación de 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 la base de datos para Cloud SQL para PostgreSQL: según demanda y automático. 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 copias de seguridad de la base de datos de Cloud SQL para PostgreSQL en la misma instancia y reemplazar los datos existentes o en una nueva. Además, Cloud SQL para PostgreSQL te permite restablecer una base de datos de PostgreSQL a un momento determinado específico, 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 capacidades de clonación de base de datos. La clonación debe crearse desde la instancia principal (es decir, no se puede crear desde una réplica). Puedes ejecutar copias de seguridad, restablecimientos y clonaciones de bases de datos desde Cloud Console o la herramienta de gcloud.

Automatización

Puedes usar la API de Administrador de Cloud SQL para automatizar por completo la administración de una instancia de Cloud SQL para PostgreSQL. La API de Administrador de Cloud SQL es una API de REST para 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?