Crea instancias

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

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 cuatro bases de datos del sistema:

  • information_schema: Proporciona acceso a los metadatos de la base de datos y la información sobre el servidor de MySQL.
  • mysql: El esquema del sistema. Contiene tablas que almacenan información requerida por el servidor MySQL mientras se ejecuta.
  • performance_schema: Una función para supervisar la ejecución del servidor MySQL a un nivel bajo.
  • sys: Contiene un conjunto de objetos que ayuda a los DBA y los desarrolladores a interpretar los datos recopilados por el esquema de rendimiento.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. 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.

Crear una instancia de MySQL

Console

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en Crear instancia.
  3. En el panel Elegir un motor de base de datos de la página Crear una instancia, haz clic en Elegir MySQL.
  4. En el campo ID de instancia del panel información de la instancia, ingresa un ID para la instancia.

    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).

  5. Establece una contraseña para el usuario raíz.

    Aunque existe la opción Sin contraseña, no la recomendamos por razones de seguridad.

  6. Para ver la contraseña en texto no encriptado, haz clic en el ícono Mostrar contraseña.

    Puedes ingresar la contraseña de forma manual o hacer clic en Generar para que Cloud SQL cree una contraseña de forma automática.
  7. Opcional: Configura una política de contraseñas para la instancia de la siguiente manera:

    1. Selecciona la casilla de verificación Habilitar políticas de contraseñas.
    2. Haz clic en el botón Configurar política de contraseñas, configura una o más de las siguientes opciones y haz clic en Guardar.
      • Longitud mínima: Especifica la cantidad mínima de caracteres que debe tener la contraseña.
      • Complejidad de la contraseña: Verifica si la contraseña es una combinación de caracteres en minúscula, mayúscula, numéricos y no alfanuméricos.
      • Restringir la reutilización de contraseñas: Especifica la cantidad de contraseñas anteriores que no puedes volver a usar.

        Esta opción solo es compatible con Cloud SQL para MySQL 8.0.

      • Inhabilitar nombre de usuario: Impide el uso del nombre de usuario en la contraseña.
  8. Selecciona la versión de la base de datos de tu instancia: MySQL 8.0 (predeterminada), MySQL 5.7 o MySQL 5.6.
  9. Opcional: Selecciona Mostrar versiones secundarias. Luego, elige una versión secundaria que no sea la predeterminada.
  10. La versión de la base de datos no se puede editar después de que se crea la instancia.

  11. Selecciona la edición de Cloud SQL para tu instancia: Enterprise o Enterprise plus. Para obtener más información sobre las ediciones de Cloud SQL, consulta Introducción a las ediciones de Cloud SQL.
  12. En la sección Elige la región y la disponibilidad zonal, selecciona la región y la zona para la instancia. La disponibilidad de las regiones puede ser diferente en función de la edición de Cloud SQL. Para obtener más información, consulta Información sobre la configuración de instancias.

    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.
  13. 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. Personalizar esta configuración de instancia es opcional. Los valores predeterminados se asignan en todos los casos en los que no se realizan personalizaciones.

    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áquina Selecciona entre núcleo compartido o núcleo dedicado. Para el núcleo compartido, cada tipo de máquina se clasifica por la cantidad de CPU (núcleos) y la cantidad de memoria de tu instancia.
    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
    Personalizado En el tipo de máquina del núcleo dedicado, en lugar de seleccionar una configuración predefinida, selecciona el botón Personalizado para crear una instancia con una configuración personalizada. Cuando seleccionas esta opción, debes seleccionar la cantidad de núcleos y de memoria para tu instancia. Obtén 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
    Conexiones
    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.
    De manera opcional, puedes especificar un rango de IP asignado para que tus instancias las usen en las conexiones.
    1. Expande la opción Mostrar la opción de rango de IP asignado.
    2. Selecciona un rango de IP en el menú desplegable.

    Tu instancia puede tener una dirección IP pública y una privada.

    IP pública Agrega una dirección IP pública para la instancia. Luego, puedes agregar redes autorizadas para conectarte a la instancia.

    Tu instancia puede tener una dirección IP pública y una privada.

    Obtén más información sobre el uso de IP pública.

    Redes autorizadasAgrega el nombre de la red nueva y la dirección de red. Más información
    Ruta privada para los servicios de Google Cloud

    Si seleccionas esta casilla de verificación, permitirás que otros servicios de Google Cloud, como BigQuery, accedan a los datos en Cloud SQL y realicen consultas en estos datos a través de una conexión privada.

    Protección de datos
    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
    Habilitar la protección contra la eliminación Determina si se debe proteger una instancia contra la eliminación accidental. 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
    Etiquetas
    AGREGAR ETIQUETAAgrega una clave y un valor para cada etiqueta que agregues. Usa etiquetas para organizar tus instancias.
    Caché de datos
    Habilita la caché de datos (opcional) Habilita la caché de datos para instancias de la edición Cloud SQL para MySQL Enterprise Plus. Para obtener más información sobre la caché de datos, consulta Caché de datos.
  14. Haz clic en Crear instancia.

    Nota: La creación de tu instancia puede tardar algunos minutos. Sin embargo, puedes ver información sobre la instancia mientras se crea.

gcloud

Para obtener información sobre cómo instalar y comenzar a usar gcloud, consulta Instala gcloud CLI. Si quieres obtener información para iniciar Cloud Shell, consulta la Documentación de Cloud Shell.

  1. Usa el comando gcloud sql instances create para crear la instancia:
    Para las instancias de Cloud SQL Enterprise Plus:
    gcloud sql instances create INSTANCE_NAME \
    --region=REGION \
    --tier=TIER \
    --database-version=MYSQL_8_0_31 \
    --edition=ENTERPRISE_PLUS
    

    Para las instancias de Cloud SQL Enterprise:
    gcloud sql instances create INSTANCE_NAME \
    --cpu=NUMBER_CPUS \
    --memory=MEMORY_SIZE \
    --region=REGION
    
    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, la siguiente cadena crea una instancia de Cloud SQL Enterprise con dos CPU virtuales y 7,680 MB de memoria:

    gcloud sql instances create myinstance \
    --database-version=MYSQL_8_0 \
    --cpu=2 \
    --memory=7680MB \
    --region=us-central1
    

    Con la siguiente cadena, se crea una instancia de Cloud SQL Enterprise Plus con cuatro núcleos:

    gcloud sql instances create myinstance \
    --database-version=MYSQL_8_0_31 \
    --tier=db-perf-optimized-N-4 \
    --edition=ENTERPRISE_PLUS \
    --region=us-central1
    

    El valor predeterminado para REGION es us-central1.

    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 a través de 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 La versión de la base de datos, que se basa en la edición de Cloud SQL.
    Región --region Consulta los valores válidos.
    Establece una política de contraseñas
    Habilitar política de contraseñas --enable-password-policy Habilita la política de contraseñas cuando se usa. De manera predeterminada, la política de contraseñas está inhabilitada. Cuando se inhabilita a través de el parámetro --clear-password-policy, los otros parámetros de la política de contraseñas se restablecen.
    Longitud mínima --password-policy-min-length Especifica la cantidad mínima de caracteres que debe tener la contraseña.
    Complejidad de la contraseña --password-policy-complexity Habilita la verificación de complejidad de contraseñas para garantizar que la contraseña contenga uno de estos tipos de caracteres: minúsculas, mayúsculas, numéricos y no alfanuméricos. Establece el valor en COMPLEXITY_DEFAULT:
    Restricción de reutilización de contraseña --password-policy-reuse-interval Especifica la cantidad de contraseñas anteriores que no puedes volver a usar. Esta opción solo es compatible con Cloud SQL para MySQL 8.0.
    No permitir el nombre de usuario --password-policy-disallow-username-substring Impide el uso del nombre de usuario en la contraseña. Usa el parámetro --no-password-policy-disallow-username-substring para inhabilitar la verificación.
    Conectividad
    IP privada --network

    --no-assign-ip (opcional)

    --allocated-ip-range-name (opcional)

    --enable-google-private-path (opcional)

    --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).

    --no-assign-ip: La instancia solo tendrá una dirección IP privada.

    --allocated-ip-range-name: Si se especifica, establece un nombre de rango para el que se asigna un rango de IP. Por ejemplo, google-managed-services-default. El nombre del rango debe cumplir con RFC-1035 y tener entre 1 y 63 caracteres. (gcloud alpha sql instances create).

    --enable-google-private-path: Si usas este parámetro, permites que otros servicios de Google Cloud, como BigQuery, accedan a los datos en Cloud SQL y realicen consultas en estos datos a través de una conexión privada.

    Este parámetro solo es válido si se cumplen estas condiciones:

    • Usas el parámetro --no-assign-ip.
    • Usas el parámetro --network para especificar el nombre de la red de VPC que deseas usar para crear una conexión privada.

    Obtén más información sobre la configuración de IP privadas.

    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
    Aplicación de SSL

    --ssl-mode

    --require-ssl

    El parámetro ssl-mode aplica de manera forzosa SSL/TLS para las conexiones. Si deseas obtener más información, consulta Configuración de Cloud SQL para MySQL.

    El parámetro require-ssl determina si las conexiones SSL a través de IP se aplican o no. require-ssl es un parámetro heredado. Utiliza ssl-mode en lugar de esta función. Para obtener más información, consulta IpConfiguration.

    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 personalizada, 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.
    Capacidad de almacenamiento --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.
    Caché de datos (opcional) --enable-data-cache Habilita o inhabilita la caché de datos para las instancias. Para obtener más información, consulta la caché de datos.
    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 con --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
    Registro binario --enable-bin-log El registro binario permite la replicación y recuperación de un momento determinado. Más información
    Configuración de retención para el registro binario --retained-transaction-log-days La cantidad de días para conservar los registros binarios de 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. Obtén más información sobre cómo darle formato a este parámetro.
    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 Cloud SQL auth, usarás esta dirección como dirección de host que tus aplicaciones o herramientas usarán para conectarse a la instancia.

  3. Configura la contraseña para el usuario “root@%” de MySQL:
    gcloud sql users set-password root \
    --host=% \
    --instance INSTANCE_NAME \
    --password PASSWORD
    

Terraform

Para crear una instancia, usa un recurso de Terraform.

resource "google_sql_database_instance" "mysql_pvp_instance_name" {
  name             = "mysql-pvp-instance-name"
  region           = "asia-northeast1"
  database_version = "MYSQL_8_0"
  root_password    = "abcABC123!"
  settings {
    tier = "db-f1-micro"
    password_validation_policy {
      min_length                  = 6
      complexity                  = "COMPLEXITY_DEFAULT"
      reuse_interval              = 2
      disallow_username_substring = true
      enable_password_policy      = true
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplica los cambios

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Borra los cambios

Para borrar tus cambios, haz lo siguiente:

  1. Para inhabilitar la protección contra la eliminación, en tu archivo de configuración de Terraform, establece el argumento deletion_protection en false.
    deletion_protection =  "false"
  2. Para aplicar la configuración actualizada de Terraform, ejecuta el siguiente comando y, luego, ingresa yes cuando se te solicite:
    terraform apply
  1. Quita los recursos que se aplicaron antes con tu configuración de Terraform a través de la ejecución del siguiente comando y, luego, ingresa yes cuando se te solicite:

    terraform destroy

REST v1

Crea la instancia

En este ejemplo, se crea una instancia. También se incluyen algunos parámetros opcionales, como las copias de seguridad y el registro binario. 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 a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID de tu proyecto
  • INSTANCE_ID: el ID de tu instancia.
  • DATABASE_VERSION: la versión de la base de datos. Por ejemplo: MYSQL_8_0 o MYSQL_8_0_31.
  • REGION: la región
  • MACHINE_TYPE: tu tipo de máquina.
  • EDITION_TYPE: tu edición de Cloud SQL
  • DATA_CACHE_ENABLED: (opcional) Configura true en modo de habilitar la caché de datos para tu instancia
  • PRIVATE_NETWORK: especifica el nombre de la red de nube privada virtual (VPC) que deseas usar para esta instancia. El acceso a servicios privados ya debe estar configurado para la red.
  • AUTHORIZED_NETWORKS: para las conexiones de IP públicas, especifica las conexiones de redes autorizadas que pueden conectarse a la instancia.

Para establecer una política de contraseñas mientras creas una instancia, incluye el objeto passwordValidationPolicy en la solicitud. Configura los siguientes parámetros, según sea necesario:

  • enablePasswordPolicy: Habilita la política de contraseñas cuando se establece en true.

    Para quitar la política de contraseñas, puedes usar una solicitud PATCH con null como valor de enablePasswordPolicy. En este caso, se restablecen los otros parámetros de la política de contraseñas.

  • minLength: Especifica la cantidad mínima de caracteres que debe tener la contraseña.
  • complexity: Verifica si la contraseña es una combinación de caracteres en minúscula, mayúscula, numéricos y no alfanuméricos. El valor predeterminado es COMPLEXITY_DEFAULT.
  • reuseInterval: Especifica la cantidad de contraseñas anteriores que no puedes volver a usar.

    Esta opción solo es compatible con Cloud SQL para MySQL 8.0.

  • disallowUsernameSubstring: Impide el uso del nombre de usuario en la contraseña cuando se configura como true.

HTTP method and URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Cuerpo JSON de la solicitud:

{
  "name": "INSTANCE_ID",
  "region": "REGION",
  "databaseVersion": "DATABASE_VERSION",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "dataCacheConfig" = {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
    }
    "ipConfiguration": {
      "privateNetwork": "PRIVATE_NETWORK",
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      "ipv4Enabled": false,
      "enablePrivatePathForGoogleCloudServices": 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/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2019-09-25T22:19:33.735Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/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.

Actualiza la contraseña raíz

Cuando la instancia termine de inicializarse, actualiza la contraseña raíz:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: es el ID de la instancia creado en el paso anterior.
  • root-password: es la contraseña raíz deseada.

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=root

Cuerpo JSON de la solicitud:

{
  "name": "root",
  "host": "%",
  "password": "root-password"
}

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/v1/projects/project-id/instances/instance-id",
  "status": "DONE",
  "user": "user@example.com",
  "insertTime": "2019-09-26T14:32:30.592Z",
  "startTime": "2019-09-26T14:32:30.594Z",
  "endTime": "2019-09-26T14:32:33.518Z",
  "operationType": "UPDATE_USER",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

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 datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: 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/v1/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_8_0_18",
  "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/v1/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.

REST v1beta4

Crea la instancia

En este ejemplo, se crea una instancia. También se incluyen algunos parámetros opcionales, como las copias de seguridad y el registro binario. 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 a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: el ID de tu proyecto
  • INSTANCE_ID: el ID de tu instancia.
  • DATABASE_VERSION: la versión de la base de datos. Por ejemplo: MYSQL_8_0 o MYSQL_8_0_31.
  • REGION: la región
  • MACHINE_TYPE: tu tipo de máquina.
  • EDITION_TYPE: tu edición de Cloud SQL
  • DATA_CACHE_ENABLED: (opcional) Configura true en modo de habilitar la caché de datos para tu instancia

Para establecer una política de contraseñas mientras creas una instancia, incluye el objeto passwordValidationPolicy en la solicitud. Configura los siguientes parámetros, según sea necesario:

  • enablePasswordPolicy: Habilita la política de contraseñas cuando se establece en true.

    Para quitar la política de contraseñas, puedes usar una solicitud PATCH con null como valor de enablePasswordPolicy. En este caso, se restablecen los otros parámetros de la política de contraseñas.

  • minLength: Especifica la cantidad mínima de caracteres que debe tener la contraseña.
  • complexity: Verifica si la contraseña es una combinación de caracteres en minúscula, mayúscula, numéricos y no alfanuméricos. El valor predeterminado es COMPLEXITY_DEFAULT.
  • reuseInterval: Especifica la cantidad de contraseñas anteriores que no puedes volver a usar.

    Esta opción solo es compatible con Cloud SQL para MySQL 8.0.

  • disallowUsernameSubstring: Impide el uso del nombre de usuario en la contraseña cuando se configura como true.

HTTP method and 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",
  "settings": {
    "tier": "MACHINE_TYPE",
    "edition": "EDITION_TYPE",
    "dataCacheConfig" {
      "dataCacheEnabled": DATA_CACHE_ENABLED
    },
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true
    },
    "passwordValidationPolicy": {
      "enablePasswordPolicy": true
      "minLength": "MIN_LENGTH",
      "complexity": COMPLEXITY_DEFAULT,
      "reuseInterval": "REUSE_INTERVAL",
      "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING",
    }
  }
}

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": "2019-09-25T22:19:33.735Z",
  "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.

Actualiza la contraseña raíz

Cuando la instancia termine de inicializarse, actualiza la contraseña raíz:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: el ID de tu proyecto
  • instance-id: es el ID de la instancia creado en el paso anterior.
  • root-password: es la contraseña raíz deseada.

Método HTTP y URL:

PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root

Cuerpo JSON de la solicitud:

{
  "name": "root",
  "host": "%",
  "password": "root-password"
}

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": "DONE",
  "user": "user@example.com",
  "insertTime": "2019-09-26T14:32:30.592Z",
  "startTime": "2019-09-26T14:32:30.594Z",
  "endTime": "2019-09-26T14:32:33.518Z",
  "operationType": "UPDATE_USER",
  "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 datos de solicitud a continuación, realiza los siguientes reemplazos:

  • project-id: 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_8_0_18",
  "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.

Especifica la versión secundaria de la base de datos

Puedes especificar la versión secundaria de una instancia existente a través de gcloud o la API de REST.

gcloud

Usa el comando gcloud sql instances create con la marca --database-version.

Reemplaza las siguientes variables antes de ejecutar el comando:

  • INSTANCE_NAME: El nombre de la instancia
  • DATABASE_VERSION: La versión secundaria de la base de datos de la instancia: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versión secundaria predeterminada para MySQL 8.0), MYSQL_8_0_32, o MYSQL_8_0_33. Si especificas MYSQL_8_0, se usa la versión secundaria predeterminada. Si no especificas esta marca, se usa la versión principal predeterminada, MYSQL_8_0.
gcloud sql instances create INSTANCE_NAME \
--database-version=DATABASE_VERSION

Para obtener información detallada, consulta la documentación sobre cómo crear una instancia a través de gcloud.

REST v1

Usa una solicitud POST con el método instances:insert y la marca databaseVersion.

    POST https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances
Antes de usar cualquiera de los datos de la solicitud, reemplaza estas variables:
  • project_id: El ID del proyecto.
  • instance_id: El nombre de la instancia
  • databaseVersion: La versión de la base de datos de la instancia: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versión secundaria predeterminada para MySQL 8.0), MYSQL_8_0_32, o MYSQL_8_0_33. Si especificas MYSQL_8_0, se usa la versión secundaria predeterminada. Si no especificas esta marca, se usa la versión principal predeterminada, MYSQL_8_0.

Para obtener información detallada, consulta la documentación sobre cómo crear una instancia a través de la API de REST v1.

REST v1beta4

Usa una solicitud POST con el método instances:insert y la marca databaseVersion.

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

Antes de usar cualquiera de los datos de la solicitud, reemplaza estas variables:

  • project_id: El ID del proyecto.
  • instance_id: El nombre de la instancia
  • databaseVersion: La versión de la base de datos de la instancia: MYSQL_8_0_18, MYSQL_8_0_26, MYSQL_8_0_27, MYSQL_8_0_28, MYSQL_8_0_29, MYSQL_8_0_30, MYSQL_8_0_31 (versión secundaria predeterminada para MySQL 8.0), MYSQL_8_0_32, o MYSQL_8_0_33. Si especificas MYSQL_8_0, se usa la versión secundaria predeterminada. Si no especificas esta marca, se usa la versión principal predeterminada, MYSQL_8_0.

Para obtener información detallada, consulta la documentación sobre cómo crear una instancia a través de la API de REST v1beta4.

Versión secundaria de la base de datos para réplicas de lectura, clonaciones y PITR

Cuando creas una réplica de lectura, puedes especificar la versión secundaria de la base de datos de la réplica de lectura. De forma predeterminada, se crean réplicas de lectura nuevas en la versión secundaria predeterminada.

Cuando clonas una instancia, la instancia recién creada tiene la misma versión secundaria que la de la fuente.

Cuando realizas una recuperación de un momento determinado, la instancia recién creada tiene la misma versión secundaria de la base de datos que la de la fuente.

Configuraciones de instancias personalizadas

Determina la memoria y los núcleos virtuales disponibles para tu instancia de Cloud SQL. La disponibilidad de los tipos de máquinas se determina según la edición de Cloud SQL.

Para las cargas de trabajo que requieren procesamiento en tiempo real, como el procesamiento de transacciones en línea (OLTP), asegúrate de que tu instancia tenga la memoria suficiente para contener toda la configuración de trabajo. Sin embargo, existen otros factores que pueden afectar los requisitos de memoria, como la cantidad de conexiones activas y los procesos de sobrecarga internos. Debes realizar pruebas de carga para evitar problemas de rendimiento en tu entorno de producción.

Cuando configures tu instancia, selecciona suficiente memoria y CPU virtuales para manejar tu carga de trabajo y actualízala a medida que esta aumente. Una configuración de máquina con CPU virtuales insuficientes podría perder su cobertura del ANS. Para obtener más información, consulta los Lineamientos operativos.

Tipos de máquinas para instancias de edición de Cloud SQL Enterprise Plus

Para las instancias de Cloud SQL Enterprise Plus, los tipos de máquinas se predefinen de la siguiente manera:

Tipo de máquina Enterprise Plus vCPUs Memoria (GB) SSD local
db-perf-optimized-N-2 2 16 375
db-perf-optimized-N-4 4 32 375
db-perf-optimized-N-8 8 64 375
db-perf-optimized-N-16 16 128 750
db-perf-optimized-N-32 32 256 1500
db-perf-optimized-N-48 48 384 3000
db-perf-optimized-N-64 64 512 6000
db-perf-optimized-N-80 80 640 6000
db-perf-optimized-N-96 96 768 6000
db-perf-optimized-N-128 128 864 9000

Tipos de máquinas para instancias de Cloud SQL Enterprise

En las instancias de Cloud SQL Enterprise, también puedes crear configuraciones de instancias personalizadas con el comando gcloud sql instances create. Los parámetros de configuración de instancias personalizadas 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 los tipos de máquinas tienen el siguiente formato: db-custom-#-#

Reemplaza el primer marcador de posición # por la cantidad de CPU en la máquina y el segundo marcador de posición # por la cantidad de memoria en la máquina.

Por ejemplo, si el nombre de tu máquina es db-custom y tu máquina tiene 1 CPU y 3,840 MB de RAM, el formato de la máquina sería db-custom-1-3840.

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)

En la siguiente tabla, se enumeran los nombres de cada tipo de máquina heredada, la cantidad de CPU y RAM de cada tipo de máquina y la string resultante para el tipo de máquina.

Puedes crear el tipo de máquina equivalente si especificas la CPU y la RAM equivalentes en la consola de Google Cloud, a través de gcloud CLI o si especificas db-custom-#-# en la API.

Tipo de máquina heredada vCPUs Memoria (MB) String db-custom-CPU-RAM (string de nivel de API)
db-n1-standard-1 1 3840 db-custom-1-3840
db-n1-standard-2 2 7680 db-custom-2-7680
db-n1-standard-4 4 15360 db-custom-4-15360
db-n1-standard-8 8 30720 db-custom-8-30720
db-n1-standard-16 16 61440 db-custom-16-61440
db-n1-standard-32 32 122880 db-custom-32-122880
db-n1-standard-64 64 245760 db-custom-64-245760
db-n1-standard-96 96 368640 db-custom-96-368640
db-n1-highmem-2 2 13312 db-custom-2-13312
db-n1-highmem-4 4 26624 db-custom-4-26624
db-n1-highmem-8 8 53248 db-custom-8-53248
db-n1-highmem-16 16 106496 db-custom-16-106496
db-n1-highmem-32 32 212992 db-custom-32-212992
db-n1-highmem-64 64 425984 db-custom-64-425984
db-n1-highmem-96 96 638976 db-custom-96-638976

Solucionar problemas

Problema Soluciona problemas
Mensaje de error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges. Please allocate new ranges for this service provider. No hay más direcciones disponibles en el rango de IP asignado. Puede haber varias 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.
  • El requisito de tamaño del rango de IP asignado será mayor si las instancias se crean en varias regiones. Consulta Tamaño del rango asignado

Para resolver este problema, puedes expandir el rango de IP asignado existente o asignar un rango de IP adicional a la conexión privada a servicios. Para obtener más información, consulta Asigna un rango de direcciones IP.

Si usaste la marca --allocated-ip-range-name mientras creaste la instancia de Cloud SQL, solo puedes expandir el rango de IP especificado.

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
    
Mensaje de error: Failed to create subnetwork. Router status is temporarily unavailable. Please try again later. Help Token: [token-ID]. Vuelve a crear la instancia de Cloud SQL.
Mensaje de error: Failed to create subnetwork. Required 'compute.projects.get' permission for PROJECT_ID. Cuando creas una instancia mediante una dirección IP privada, se crea una cuenta de servicio a tiempo con la API de Service Networking. Si solo habilitaste recientemente la API de Service Networking, es posible que la cuenta de servicio no se cree y la creación de la instancia falle. En este caso, debes esperar a que la cuenta de servicio se propague en todo el sistema o agregarla de forma manual con los permisos necesarios.

¿Qué sigue?

  1. Crear una base de datos de MySQL en la instancia
  2. Crear usuarios de MySQL en la instancia
  3. Protege y controla el acceso a la instancia.
  4. Conectarse a la instancia con un cliente MySQL
  5. Importa datos a la base de datos.