Configurar marcas de bases de datos

En esta página se describe cómo configurar marcas de bases de datos en Cloud SQL y se enumeran las marcas que puedes definir en tu instancia. Las marcas de bases de datos se usan en muchas operaciones, como ajustar los parámetros de SQL Server, ajustar las opciones y configurar y optimizar una instancia.

Cuando define, quita o modifica una marca de una instancia de base de datos, es posible que la base de datos se reinicie. El valor de la marca se conserva en la instancia hasta que lo elimines. Si la instancia es el origen de una réplica y se reinicia, la réplica también se reinicia para adaptarse a la configuración actual de la instancia.

Configurar marcas de bases de datos

En las siguientes secciones se describen las tareas habituales de gestión de denuncias.

Definir una marca de base de datos

Consola

  1. En la Google Cloud consola, selecciona el proyecto que contiene la instancia de Cloud SQL para la que quieras definir una marca de base de datos.
  2. Abre la instancia y haz clic en Editar.
  3. Ve a la sección Banderas.
  4. Si quieres configurar una marca que no se haya establecido previamente en la instancia, haz clic en Añadir elemento, elige la marca en el menú desplegable y establece su valor.
  5. Haz clic en Guardar para guardar los cambios.
  6. Confirma los cambios en la sección de marcas de la página de la visión general.

gcloud

Edita la instancia:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

Este comando sobrescribirá todas las marcas de la base de datos que se hayan definido anteriormente. Para mantenerlos y añadir otros, incluya los valores de todas las marcas que quiera definir en la instancia. Las marcas que no se incluyan específicamente se definirán con su valor predeterminado. En el caso de las marcas que no aceptan ningún valor, especifica el nombre de la marca seguido de un signo igual ("=").

Por ejemplo, para definir las marcas 1204, remote access y remote query timeout (s), puedes usar el siguiente comando:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

Para añadir marcas de base de datos, usa un recurso de Terraform.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # 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 la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

Preparar Cloud Shell

  1. Abre Cloud Shell.
  2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

    Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

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

Preparar 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 en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

    Copia el código de ejemplo en el archivo main.tf que acabas de crear.

    También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

  3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
    terraform init

    Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
    terraform plan

    Haga las correcciones necesarias en la configuración.

  2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply

    Espera hasta que Terraform muestre el mensaje "Apply complete!".

  3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

Eliminar los cambios

Para eliminar los cambios, sigue estos pasos:

  1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
    deletion_protection =  "false"
  2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
    terraform apply
  1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

    terraform destroy

REST v1

Para definir una marca en una base de datos, sigue estos pasos:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Si ya hay marcas configuradas para la base de datos, modifica el comando anterior para incluirlas. El comando PATCH sustituye las marcas actuales por las especificadas en la petición.

REST v1beta4

Para definir una marca en una base de datos, sigue estos pasos:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Si ya hay marcas configuradas para la base de datos, modifica el comando anterior para incluirlas. El comando PATCH sustituye las marcas actuales por las especificadas en la petición.

Borrar todas las marcas y restablecer sus valores predeterminados

Consola

  1. En la Google Cloud consola, selecciona el proyecto que contiene la instancia de Cloud SQL de la que quieres borrar todas las marcas.
  2. Abre la instancia y haz clic en Editar.
  3. Abre la sección de marcas de base de datos.
  4. Haz clic en la X situada junto a todas las alertas que se muestren.
  5. Haz clic en Guardar para guardar los cambios.

gcloud

Restablece el valor predeterminado de todas las marcas de una instancia de este modo:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

Se te pedirá que aceptes que la instancia se reinicie.

REST v1

Si quieres borrar todas las marcas de una instancia, usa este método:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "databaseFlags": []
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

REST v1beta4

Si quieres borrar todas las marcas de una instancia, usa este método:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "settings":
  {
    "databaseFlags": []
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

Determinar qué marcas de bases de datos se han definido en una instancia

Para ver qué marcas se han definido en una instancia de Cloud SQL, sigue estos pasos:

Consola

  1. En la Google Cloud consola, selecciona el proyecto que contiene la instancia de Cloud SQL de la que quieres ver las marcas de base de datos que se han definido.
  2. Selecciona la instancia para abrir la página de visión general de dicha instancia.

    Las marcas de base de datos establecidas se pueden consultar en la sección sobre marcas de base de datos.

gcloud

Obtén el estado de la instancia:

gcloud sql instances describe INSTANCE_NAME

En la salida, las marcas de bases de datos se muestran en settings como la colección databaseFlags. Para obtener más información sobre la representación de las marcas en el resultado, consulta Representación del recurso Instances.

REST v1

Si quieres identificar los indicadores configurados en una instancia, usa este método:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

En el resultado, busca el campo databaseFlags.

REST v1beta4

Si quieres identificar los indicadores configurados en una instancia, usa este método:

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • project-id: el ID del proyecto
  • instance-id: el ID de instancia.

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

En el resultado, busca el campo databaseFlags.

Marcas compatibles

Cloud SQL solo admite las marcas que se indican en esta sección.

Marca Cloud SQL Tipo
Valores aceptables y notas
Reiniciar
¿Es necesario?
1204 (marca de seguimiento) boolean
on | off
No
1222 (marca de seguimiento) boolean
on | off
No
1224 (marca de seguimiento) boolean
on | off
No
2528 (marca de seguimiento) boolean
on | off
No
3205 (marca de seguimiento) boolean
on | off
No
3226 (marca de seguimiento) boolean
on | off
No
3625 (marca de seguimiento) boolean
on | off
4199 (trace flag) boolean
on | off
No
4616 (marca de seguimiento) boolean
on | off
No
7806 (marca de seguimiento) boolean
on | off
access check cache bucket count integer
0 ... 65536
No
cuota de caché de comprobación de acceso integer
0 ... 2147483647
No
máscara de afinidad integer
2147483648 ... 2147483647
No
agent xps boolean
on | off
No
soft-numa automático inhabilitado boolean
on | off
cloud sql xe bucket name string
El nombre del segmento debe empezar por el prefijo gs://.
No
cloud sql xe output total disk size (mb) integer
10 ... 512
No
cloud sql xe file retention (mins) integer
0 ... 10080
No
Intervalo de subida de Cloud SQL XE (min.) integer
1 ... 60
No
cloudsql enable linked servers boolean
on | off
No
Umbral de coste para el paralelismo integer
0 ... 32767
No
Autenticación de bases de datos independientes boolean
on | off
No
cross db ownership chaining boolean
on | off
No
umbral del cursor integer
-1 ... 2147483647
No
idioma predeterminado de texto completo integer
0 ... 2147483647
No
idioma predeterminado integer
0 ... 32
No
El seguimiento predeterminado está habilitado boolean
on | off
No
no permitir resultados de activadores boolean
on | off
No
Secuencias de comandos externas habilitadas boolean
on | off
Ancho de banda de rastreo de ft (máximo) integer
0 ... 32767
No
Ancho de banda de rastreo de pie (min.) integer
0 ... 32767
No
Ancho de banda de notificación de ft (máximo) integer
0 ... 32767
No
Ancho de banda de notificación de ft (min.) integer
0 ... 32767
No
Factor de relleno (%) integer
0 ... 100
No
Memoria de creación de índice (kb) integer
704 ... 2147483647
No
cerraduras integer
5000 ... 2147483647
Grado máximo de paralelismo (MAXDOP) integer
0 ... 32767
No
Memoria máxima del servidor (MB) integer
1000 ... 2147483647
Cloud SQL puede definir un valor para esta marca en las instancias, en función de los valores recomendados de Microsoft. Para obtener más información, consulta Banderas especiales.
No
Tamaño máximo de sustitución de texto (b) integer
-1 ... 2147483647
No
max worker threads integer
128 ... 65535
No
activadores anidados boolean
on | off
No
optimizar las cargas de trabajo puntuales boolean
on | off
No
Tiempo de espera de ph (s) integer
1 ... 3600
No
límite de coste de gobernador de consultas integer
0 ... 2147483647
No
Tiempo de espera de la consulta (s) integer
-1 ... 2147483647
No
Intervalo de recuperación (min) integer
0 ... 32767
No
acceso remoto boolean
on | off
Tiempo de espera de inicio de sesión remoto (s) integer
0 ... 2147483647
No
Tiempo de espera de consulta remota (s) integer
0 ... 2147483647
No
transformar las palabras de relleno boolean
on | off
No
Corte del año de dos dígitos integer
1753 ... 9999
No
conexiones de usuario integer
0, 10 ... 32767
opciones de usuario integer
0 ... 32767
No

Marcas especiales

En esta sección se incluye información adicional sobre las marcas de Cloud SQL para SQL Server.

max degree of parallelism (MAXDOP)

Max degree of parallelism (MAXDOP) es una marca de base de datos de Microsoft que se puede usar en Cloud SQL para SQL Server. Esta marca te permite limitar el número máximo de subprocesos que se usan al ejecutar una sola consulta en un plan paralelo.

Si se deja el valor predeterminado 0, la instancia de base de datos usará todos los procesadores disponibles. Sin embargo, puede que no siempre sea eficiente o práctico si se gestionan instancias con cientos de bases de datos.

Te recomendamos que sigas las recomendaciones de la documentación de Microsoft al definir el valor de la marca, que puede variar en función del número de nodos NUMA y del número de procesadores lógicos disponibles.

Puedes comprobar la configuración del nodo NUMA mediante la vista de administración dinámica (DMV) de sys.dm_os_sys_info. Para comprobar la configuración del nodo NUMA, utiliza un fragmento de código similar al siguiente:

      SELECT socket_count,cores_per_socket,numa_node_count 
FROM sys.dm_os_sys_info

Aunque puede usar MAXDOP para limitar el número máximo de procesadores que quiere permitir para la ejecución de planes paralelos, también puede usar la función Umbral de coste para el paralelismo para indicar el coste mínimo que quiere definir para un solo procesador antes de ampliar las operaciones paralelas a otro procesador. Estas funciones le permiten controlar mejor la eficiencia y el coste de la ejecución de planes paralelos.

Los valores recomendados para estas funciones varían en cada caso y dependen de las necesidades de carga de trabajo de tu servidor y aplicación.

Para obtener ayuda a la hora de determinar los mejores valores de MAXDOP y de umbral de coste para el paralelismo de tus servidores, consulta los siguientes recursos:

Al cambiar el valor predeterminado, se pueden solucionar los siguientes problemas:

  • Si la marca max degree of parallelism (MAXDOP) se define como 0, las instancias o las aplicaciones cliente que requieran descargas de SharePoint fallarán. La descarga de SharePoint ejecuta una comprobación previa que requiere un valor numérico para la marca y no acepta un valor inferior a 1.
  • Si se deja el valor predeterminado 0 de la marca MAXDOP, se indica que no hay ningún límite y que se pueden usar todos los procesadores disponibles para las operaciones paralelas. Aunque este valor puede ser adecuado para servidores que ejecutan consultas pequeñas de forma rutinaria, puede suponer un problema de costes si también necesitas ejecutar consultas muy grandes periódicamente.

Con la marca max degree of parallelism (MAXDOP), puedes controlar el número de subprocesos en tres niveles:

  • A nivel de instancia, mediante marcas de base de datos
  • Ámbito de la base de datos con T-SQL
  • A nivel de consulta, mediante sugerencias de consulta

Ten en cuenta que, si se cambia el tamaño de la instancia, el valor de la marca no se modifica.

max server memory (mb)

La marca max server memory (mb) limita la cantidad de memoria que Cloud SQL puede asignar a sus grupos internos.

Te recomendamos que no configures ningún valor para esta marca y que dejes que Cloud SQL gestione el valor por ti. Si debe gestionar este valor manualmente, le recomendamos que establezca el valor max server memory (mb) en aproximadamente el 80 % de la memoria disponible para evitar que SQL Server consuma toda la memoria.

Por el contrario, en las instancias con grandes cantidades de memoria, el 80% de la memoria disponible puede ser un valor demasiado bajo y puede provocar que se desaproveche la memoria.

Si no asigna un valor a esta marca, Cloud SQL gestionará el valor automáticamente en función del tamaño de la RAM de su instancia. Además, si cambias el tamaño de tu instancia, Cloud SQL ajustará automáticamente el valor de la marca para cumplir nuestras recomendaciones para el nuevo tamaño de la instancia. Esta operación de cambio de tamaño también elimina cualquier valor definido manualmente para esta marca. De esta forma, tu base de datos puede utilizar los recursos de forma más eficaz, ya que se evita la asignación excesiva, se reduce la probabilidad de que se produzca un fallo debido a problemas de falta de memoria y se evita que el rendimiento de tu instancia se vea afectado.

Para obtener más información, consulta Memoria máxima del servidor y Optimizar el uso elevado de memoria.

Solución de problemas

Problema Solución de problemas
Quieres modificar la zona horaria de una instancia de Cloud SQL.

Para ver cómo actualizar la zona horaria de una instancia, consulta Configuración de la instancia.

En Cloud SQL para SQL Server, puedes usar la función AT TIME ZONE para conversiones de tiempo y más. Para obtener más información sobre esta función, consulta AT TIME ZONE (Transact-SQL).

Siguientes pasos