Crea instancias

En esta página, se describe cómo crear un Cloud SQL para una instancia de PostgreSQL.

Para obtener información detallada sobre toda la configuración de las instancias, consulta Configuración de las instancias.

Una instancia recién creada tiene una base de datos postgres.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Instala e inicializa el SDK de Cloud.
  5. Asegúrate de tener las funciones de administrador de Cloud SQL y visualizador de Compute en tu cuenta de usuario.

    Ir a la página IAM

    Obtén más información sobre las funciones y los permisos.

Crea una instancia de PostgreSQL

Para crear una instancia de PostgreSQL, sigue estos pasos:

Console

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

    Ir a Instancias de Cloud SQL

  2. Haga clic en Crear instancia.
  3. Selecciona PostgreSQL y haz clic en Siguiente.
  4. Ingresa un nombre.

    No incluyas información sensible ni de identificación personal en el nombre de tu instancia, ya que es visible de forma externa.

    No debes incluir el ID de proyecto en el nombre de la instancia. Esto se hace de manera automática cuando es apropiado (por ejemplo, en los archivos de registro).

  5. Ingresa una contraseña para el usuario postgres.
  6. Selecciona la versión de la base de datos para tu instancia: PostgreSQL 13 (predeterminado), PostgreSQL 12, PostgreSQL 11, PostgreSQL 10 o PostgreSQL 9.6.

    La versión de la base de datos no se puede editar después de que se crea la instancia.

  7. En la sección Elige una región y una disponibilidad zonal, selecciona la región y la zona para la instancia.

    Ubica la instancia en la misma región que los recursos que acceden a ella. No se podrá modificar la región que seleccionaste en un futuro. En la mayoría de los casos, no necesitas especificar una zona.

    Si estás configurando tu instancia para alta disponibilidad, puedes seleccionar una zona principal y una secundaria.

    Se aplican las siguientes condiciones cuando se usa la zona secundaria durante la creación de la instancia:

    • Las zonas están predeterminadas como Any para la zona principal y Any (different from primary) para la zona secundaria.
    • Si se especifican las zonas principal y secundaria, deben ser zonas distintas.
  8. En la sección Personaliza tu instancia, actualiza la configuración de la instancia. Primero, haz clic en MOSTRAR OPCIONES DE CONFIGURACIÓN para mostrar los grupos de opciones de configuración. Luego, expande los grupos que desees para revisar y personalizar la configuración. A la derecha, se muestra un informe de resumen de todas las opciones que seleccionas.

    En la siguiente tabla, se muestra una referencia rápida a la configuración de instancias. Para obtener más detalles sobre cada configuración, consulta la página de configuración de instancia.

    Configuración Notas
    Tipo de máquina
    Tipo de máquinaSelecciona entre las siguientes opciones: con núcleo compartido, básica, estándar (más común) o con memoria alta.
    Personalizada Selecciona este botón para crear una instancia con una configuración flexible. Cuando seleccionas esta opción, debes seleccionar la cantidad de núcleos y de memoria para tu instancia. Más información
    Núcleos El número de CPU virtuales para tu instancia. Más información.
    Memoria La cantidad de memoria para la instancia, en GB. Más información
    Almacenamiento
    Tipo de almacenamiento Determina si tu instancia usa almacenamiento SSD o HDD. Más información.
    Capacidad de almacenamiento La cantidad de almacenamiento aprovisionado para la instancia. Más información
    Habilitar los aumentos de almacenamiento automáticos Determina si Cloud SQL proporciona de manera automática más almacenamiento para tu instancia cuando queda poco espacio libre. Más información
    Encriptación
    Encriptación administrada por GoogleLa opción predeterminada.
    Clave de encriptación administrada por la clave del cliente (CMEK)Selecciona esta opción para usar tu clave con Google Cloud Key Management Service. Más información
    Conectividad
    IP privada Agrega una dirección IP privada para la instancia. Para habilitar la conexión a la instancia, se requiere una configuración adicional. Más información
    IP pública Agrega una dirección IP pública para la instancia. Luego, puedes agregar redes autorizadas para conectarte a la instancia. Más información
    Redes autorizadasAgrega el nombre de la red nueva y la dirección de red. Más información
    Copias de seguridad
    Copias de seguridad automáticas El período en el que deseas que se inicien las copias de seguridad. Más información
    Elige dónde almacenar tus copias de seguridadSelecciona Multirregión para la mayoría de los casos de uso. Si necesitas almacenar copias de seguridad en una región específica, por ejemplo, si hay motivos normativos para hacerlo, selecciona Región y selecciona tu región en el menú desplegable de Ubicación.
    Elige cuántas copias de seguridad automáticas se almacenaránEs la cantidad de copias de seguridad automáticas que deseas conservar (de 1 a 365 días). Más información
    Habilita la recuperación de un momento determinado Habilita la recuperación de un momento determinado y el registro de escritura por adelantado. Más información
    Elige la cantidad de días que se retendrán los registros Configura la retención de escritura por adelantado de 1 a 7 días. La configuración predeterminada es de 7 días. Más información
    Mantenimiento
    Ventana preferida Determina un período de una hora para que Cloud SQL realice un mantenimiento disruptivo en la instancia. Si no configuras el período, el mantenimiento disruptivo puede realizarse en cualquier momento. Más información
    Orden de las actualizaciones Tu horario de preferencia para actualizaciones de instancia, en relación con otras instancias del mismo proyecto. Más información
    Marcas
    AGREGAR MARCA Puedes usar las marcas de la base de datos para controlar los parámetros y la configuración de tu instancia. Más información
    Labels
    AGREGAR ETIQUETAAgrega una clave y un valor para cada etiqueta que agregues. Usa etiquetas para organizar tus instancias.
  9. Haga clic en Crear.

gcloud

Para obtener información sobre cómo instalar y comenzar a usar la herramienta de línea de comandos de gcloud, consulta Instala el SDK de Cloud. Si quieres obtener información para iniciar Cloud Shell, consulta la documentación de Cloud Shell.

  1. Crea la instancia:
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_12
     --cpu=NUMBER_CPUS \
     --memory=MEMORY_SIZE \
     --region=REGION \
     --gce-zone=GCE_ZONE \
     --zone=ZONE
    
    Como alternativa, puedes usar la marca “--tier” si eliges db-f1-micro o db-g1-small como el tipo de máquina:
    gcloud sql instances create INSTANCE_NAME \
    --tier=API_TIER_STRING \
    --region=REGION
    

    Hay restricciones para los valores de CPU virtual y tamaño de memoria:

    • La cantidad de CPU virtuales debe ser 1 o un número par entre 2 y 96.
    • La memoria debe tener las siguientes características:
      • Ser de entre 0.9 y 6.5 GB por CPU virtual
      • Ser un múltiplo de 256 MB
      • Ser de al menos 3.75 GB (3,840 MB)

    Por ejemplo, mediante la siguiente string, se crea una instancia con dos CPU virtuales y 7,680 MB de memoria:

    gcloud sql instances create myinstance \
    --database-version=POSTGRES_12 \
    --cpu=2 \
    --memory=7680MB \
    --region=us-central
    
    Consulta Configuración de instancias flexible para obtener más información sobre el tamaño de --cpu y --memory.

    El valor predeterminado para REGION es us-central.

    No incluyas información sensible o de identificación personal en el nombre de tu instancia, ya que es visible de forma externa.
    No debes incluir el ID del proyecto en el nombre de la instancia. Esto se hace de manera automática cuando es apropiado (por ejemplo, en los archivos de registro).

    Si creas una instancia para alta disponibilidad, puedes especificar las zonas principal y secundaria mediante los parámetros --zone y --secondary-zone. Se aplican las siguientes condiciones cuando se usa la zona secundaria durante la creación o la edición de la instancia:

    • Las zonas deben ser válidas.
    • Si se especifica la zona secundaria, también se debe especificar la principal.
    • Si se especifican las zonas principal y secundaria, deben ser zonas distintas.
    • Si se especifican las zonas principal y secundaria, deben pertenecer a la misma región.

    Puedes agregar más parámetros para determinar la configuración de otras instancias:

    Configuración Parámetro Notas
    Parámetros obligatorios
    Versión de la base de datos --database-version POSTGRES_13 (predeterminado), POSTGRES_12, POSTGRES_11 POSTGRES_10 o POSTGRES_9_6
    Región --region Ver valores válidos.
    Conectividad
    IP privada --network Especifica el nombre de la red de VPC que deseas usar para esta instancia. El acceso a servicios privados ya debe estar configurado para la red. Esta opción solo está disponible para el comando Beta (gcloud beta sql instances create). Más información.
    IP pública --authorized-networks Con conexiones de IP públicas, solo las conexiones de redes autorizadas se pueden conectar a tu instancia. Más información.
    Tipo de máquina y almacenamiento
    Tipo de máquina --tier Se usa para especificar una instancia de núcleo compartido (db-f1-micro o db-g1-small). Para una configuración de instancia flexible, usa en su lugar los parámetros --cpu o --memory. Consulta Configuración de instancias personalizadas.
    Tipo de almacenamiento --storage-type Determina si tu instancia usa almacenamiento SSD o HDD. Más información.
    Storage capacity --storage-size La cantidad de almacenamiento aprovisionado para la instancia, en GB. Más información.
    Aumento de almacenamiento automático --storage-auto-increase Determina si Cloud SQL proporciona de manera automática más almacenamiento para tu instancia cuando queda poco espacio libre. Más información.
    Límite de aumento de almacenamiento automático --storage-auto-increase-limit Determina el tamaño del almacenamiento que Cloud SQL puede aumentar de forma automática. Esta opción solo está disponible para el comando Beta (gcloud beta sql instances create). Más información.
    Copias de seguridad automáticas y alta disponibilidad
    Alta disponibilidad --availability-type Para una instancia con disponibilidad alta, configúrala a REGIONAL. Más información.
    Zona secundaria --secondary-zone Si creas una instancia para alta disponibilidad, puedes especificar las zonas principal y secundaria mediante los parámetros >--zone y --secondary-zone parameters. Se aplican las siguientes restricciones cuando se usa la zona secundaria durante la creación o la edición de la instancia:
    • Las zonas deben ser válidas.
    • Si se especifica la zona secundaria, también se debe especificar la principal.
    • Si se especifican las zonas principal y secundaria, deben ser zonas distintas.

      Si se especifican las zonas principal y secundaria, deben pertenecer a la misma región.

    Copias de seguridad automáticas --backup-start-time El período en el que deseas que se inicien las copias de seguridad. Más información
    Configuración de retención para copias de seguridad automáticas --retained-backups-count Es la cantidad de copias de seguridad automáticas que se retendrán. Más información
    Recuperación de un momento determinado --enable-point-in-time recovery Habilita la recuperación de un momento determinado y el registro de escritura por adelantado. Más información
    Configuración de retención para el registro binario --retained-transaction-log-days El número de días que se conservan los registros de escritura por adelantado para la recuperación de un momento determinado. Más información
    Agrega marcas de bases de datos
    Marcas de la base de datos --database-flags Puedes usar las marcas de la base de datos para controlar los parámetros y la configuración de tu instancia. Obtén más información sobre las marcas de base de datos.
    Programa de mantenimiento
    Período de mantenimiento --maintenance-window-day,
    --maintenance-window-hour
    Determina un período de una hora durante el cual Cloud SQL realiza un mantenimiento disruptivo en tu instancia. Si no lo configuras, el mantenimiento disruptivo puede realizarse en cualquier momento. Más información.
    Horario de mantenimiento --maintenance-release-channel Tu horario de preferencia para actualizaciones de instancia, en relación con otras instancias del mismo proyecto. Use preview para las primeras actualizaciones y production para las más recientes. Más información.

  2. Anota la dirección IP asignada de manera automática.

    Si no usas el proxy de autenticación de Cloud SQL, usarás esta dirección como la dirección de host que tus aplicaciones o herramientas usarán para conectarse a la instancia.

  3. Configura la contraseña para el usuario postgres:
    gcloud sql users set-password postgres \
    --instance=INSTANCE_NAME \
    --password=PASSWORD
    

REST v1beta4

Crea la instancia

Este ejemplo crea una instancia con las copias de seguridad y el registro binario habilitados. Esta configuración es opcional. Para ver una lista completa de los parámetros de esta llamada, consulta la página Instances:insert. Para obtener información sobre la configuración de las instancias, incluidos los valores válidos por región, consulta Configuración de instancias.

No incluyas información sensible o de identificación personal en el ID de tu instancia, ya que es visible de forma externa.
No debes incluir el ID del proyecto en el nombre de la instancia. Esto se hace de manera automática cuando es apropiado (por ejemplo, en los archivos de registro).

Antes de usar cualquiera de los datos de solicitud siguientes, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: Es el ID de instancia que elegiste.
  • region: Es la región que elegiste.
  • database-version: Es la string de enumeración de la versión de la base de datos. Por ejemplo: POSTGRES_12.
  • password: Es la contraseña para el usuario raíz.
  • machine-type: Es la string de enumeración del tipo de máquina (nivel) como: db-custom-[CPUS]-[MEMORY_MBS].

Método HTTP y URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Cuerpo JSON de la solicitud:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "rootPassword": "password",
  "settings": {
    "tier": "machine-type",
    "backupConfiguration": {
      "enabled": true
    }
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-01T19:13:21.834Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

La respuesta es una operación de larga duración, que puede tardar unos minutos en completarse.

Recupera la dirección IPv4

Recupera la dirección IPv4 asignada de manera automática a la nueva instancia:

Antes de usar cualquiera de los siguientes datos de solicitud, reemplaza lo siguiente:

  • project-id: es el ID de tu proyecto.
  • instance-id: es el ID de la instancia creado en el paso anterior.

Método HTTP y URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "us-west1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "18:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "1",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "--redacted--",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    ...
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "us-west1",
  "gceZone": "us-west1-a"
}

Busca el campo ipAddress en la respuesta.

Si quieres ver cómo se crea la solicitud a la API de REST subyacente para esta tarea, consulta el Explorador de API en la página de instances:insert.

Configuraciones de instancias personalizadas

Las opciones de configuración de instancias flexibles te permiten seleccionar la cantidad de memoria y CPU que tu instancia necesita. Esta flexibilidad te permite elegir la forma de VM adecuada para tu carga de trabajo. Los nombres de tipo de máquina usan el formato db-custom-CPU-RAM, donde CPU es la cantidad de CPU en la máquina, y RAM es la cantidad de memoria en la máquina.

Cuando seleccionas la cantidad de CPU y memoria, hay algunas restricciones en la configuración que eliges:

  • La cantidad de CPU virtuales debe ser 1 o un número par entre 2 y 96.
  • La memoria debe tener las siguientes características:
    • Ser de entre 0.9 y 6.5 GB por CPU virtual
    • Ser un múltiplo de 256 MB
    • Ser de al menos 3.75 GB (3,840 MB)

Soluciona problemas

Haz clic en los vínculos de la tabla para obtener más información:

Situación Posible problema Solución
Internal error. Falta la cuenta de servicio de herramientas redes de servicios. Inhabilita y vuelve a habilitar Service Networking API.
La creación de la instancia de Terraform falla. Hay un error en la configuración de Terraform. Inspecciona y repara el archivo de configuración de Terraform.
HTTP Error 409 en la secuencia de comandos de Terraform. Ya hay otra operación en curso. Corrige la secuencia de comandos de Terraform para que espere a que finalice cada operación.
Unknown error

Es posible que la API de Service Networking no esté habilitada.

Es posible que estés intentando crear una instancia con el mismo nombre de una que se borró recientemente.

Es posible que estés intentando crear varias instancias a la vez.

Es posible que la creación de tu subred falle si no hay más direcciones disponibles en el rango de IP.

Habilita la API de Service Networking.

Usa un nombre diferente para la instancia o espera hasta que haya pasado una semana desde el momento en que se borró la otra instancia.

Crea instancias consecutivas.

Consulta otros mensajes de Error desconocido si no coinciden con tu caso.

Asigna rangos nuevos.

Failed to create subnetwork. No hay más direcciones disponibles en el rango de IP. Asigna rangos nuevos.

Error interno

Verás el mensaje de error {"ResourceType":"sqladmin.v1beta4.instance", "ResourceErrorCode":"INTERNAL_ERROR","ResourceErrorMessage":null}.

Posible problema

Es probable que al proyecto de servicio le falte la cuenta de servicio de herramientas de redes de servicios requerida para esta función.

Solución

Para reparar los permisos del servicio, inhabilita la Service Networking API, espera cinco minutos y vuelve a habilitarla.


La creación de la instancia de Terraform falla

La creación de la instancia de Terraform falla.

Posible problema

Por lo general, este es un problema propio de la secuencia de comandos de Terraform.

Solución

Inspecciona y repara el archivo de configuración de Terraform.


Error 409 en la secuencia de comandos de Terraform

Verás el mensaje de error HTTP Error 409 en las secuencias de comandos de Terraform.

Posible problema

Operation failed because another operation was already in progress

Solución

Revisa la secuencia de comandos para detener la ejecución hasta que se complete cada operación de instancia. Sondea la secuencia de comandos y espera hasta que se muestre un estado 200 para el ID de la operación anterior antes de continuar con el siguiente paso.


Error desconocido

Cuando intentas crear una instancia, ves un mensaje de error como Cloud SQL creation failed, error UNKNOWN.

Posible problema

  • Es posible que la API de Service Networking habilitada no esté habilitada.
  • Puede que estés intentando volver a usar el nombre de una instancia que borraste recientemente. Los nombres de las instancias no se pueden volver a usar durante una semana después de la eliminación.
  • Es posible que estés intentando crear varias instancias a la vez. En este caso, solo se crea la primera instancia y el resto falla con Unknown error. Solo puedes ejecutar una operación de creación a la vez.
  • Es posible que la creación de tu subred falle si no había más direcciones disponibles en el rango de IP.

Solución

  • Habilita la API de Service Networking.
  • Usa un nombre diferente para la instancia o espera una semana a fin de crear una nueva con ese nombre.
  • Crea varias instancias consecutivamente, en lugar de hacerlo en simultáneo.
  • Consulta debajo la sección No se pudo crear la subred.

No se pudo crear la subred

Recibes el siguiente mensaje de error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider.

Posible problema

No hay más direcciones disponibles en el rango de IP asignado.

Si encuentras este error cuando intentas crear una instancia de Cloud SQL con una IP privada en una red de VPC compartida mediante conexiones privadas a servicios, hay cinco situaciones posibles:

  • El tamaño del rango de IP asignado para la conexión privada a servicios es menor que /24.
  • El tamaño del rango de IP asignado para la conexión privada a servicios es demasiado pequeño para la cantidad de instancias de Cloud SQL.
  • Intentas crear instancias de MySQL o SQL Server y PostgreSQL en la misma conexión privada a servicios del proyecto host de VPC. MySQL y SQL Server pueden compartir la misma conexión de servicio. PostgreSQL requiere su propia conexión de servicio.
  • Intentas crear instancias en la misma conexión privada a servicios en diferentes regiones, lo cual no es compatible.

Solución

Para cada una de las situaciones anteriores, puedes optar por expandir o asignar un rango de IP adicional a la conexión privada a servicios.

Si asignas un nuevo rango, ten cuidado de no crear una asignación que se superponga con cualquier asignación existente.

Después de crear un nuevo rango de IP, actualiza el intercambio de tráfico de VPC con el siguiente comando:

gcloud services vpc-peerings update --service=servicenetworking.googleapis.com
--ranges=[OLD_RESERVED_RANGE_NAME],[NEW_RESERVED_RANGE_NAME] --network=[VPC_NETWORK]
--project=[PROJECT_ID] --force

Si expandes una asignación existente, asegúrate de aumentar solo el rango de asignación y no disminuirlo. Por ejemplo, si la asignación original era 10.0.10.0/24, realiza la nueva asignación de 10.0.10.0/23 como mínimo.

En general, si empiezas desde una asignación /24, disminuir la /mask en 1 para cada condición (grupo adicional de tipos de instancias, región adicional) es una buena regla general. Por ejemplo, si intentas crear ambos grupos de tipos de instancias en la misma asignación, pasar de /24 a /23 es suficiente.

Después de expandir un rango de IP existente, actualiza el intercambio de tráfico de VPC con el siguiente comando:

gcloud services vpc-peerings update --service=servicenetworking.googleapis.com
--ranges=[RESERVED_RANGE_NAME] --network=[VPC_NETWORK] --project=[PROJECT_ID]

¿Qué sigue?