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 PostgreSQL, ajustar las opciones y configurar y optimizar una instancia.

En algunos casos, para habilitar completamente la función que quieres usar, es posible que tengas que definir otra marca.

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 log_connections y log_min_error_statement, puedes usar el siguiente comando:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags=log_connections=on,log_min_error_statement=error

Terraform

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

resource "google_sql_database_instance" "instance" {
  name             = "postgres-instance"
  region           = "us-central1"
  database_version = "POSTGRES_14"
  settings {
    database_flags {
      name  = "log_connections"
      value = "on"
    }
    database_flags {
      name  = "log_min_error_statement"
      value = "error"
    }
    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 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:

Ver los valores actuales de las marcas de bases de datos

Para ver todos los valores actuales de la configuración de PostgreSQL, inicia sesión en tu instancia con el cliente psql e introduce la siguiente instrucción:

 SELECT name, setting FROM pg_settings;

Ten en cuenta que solo puedes cambiar el valor de las marcas admitidas como se detalla a continuación.

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

No se admiten las marcas que no se mencionan a continuación.

En el caso de una marca determinada, Cloud SQL puede admitir un valor o un intervalo diferente del parámetro o la opción de PostgreSQL correspondiente.

A | C | D | E | F | G | H | I | J | L | M | O | P | R | S | T | V | W

Marca Cloud SQL Tipo
Valores aceptables y notas
¿Es necesario reiniciar
?
anon.algorithm String
El valor predeterminado es sha256.
No
anon.maskschema String
El valor predeterminado es mask.
No
anon.restrict_to_trusted_schemas boolean
on | off
El valor predeterminado es desactivado.
No
anon.salt String
No hay ningún valor predeterminado.
No
anon.sourceschema String
El valor predeterminado es público.
No
auto_explain.log_analyze boolean
on | off
El valor predeterminado es desactivado.
No
auto_explain.log_buffers boolean
on | off
El valor predeterminado es desactivado.
No
auto_explain.log_min_duration Integer
-1 ... 2147483647
El valor predeterminado es -1.
No
auto_explain.log_format String
text|xml|json|yaml
El valor predeterminado es text.
No
auto_explain.log_level String
debug5|debug4|debug3|debug2|debug1|debug|
info|notice|warning|log
El valor predeterminado es log.
Compatible con PostgreSQL 12 y versiones posteriores.
No
auto_explain.log_nested_statements boolean
on | off
El valor predeterminado es desactivado.
No
auto_explain.log_settings boolean
on | off
El valor predeterminado es desactivado.
Compatible con PostgreSQL 12 y versiones posteriores.
No
auto_explain.log_timing boolean
on | off
El valor predeterminado es activado.
No
auto_explain.log_triggers boolean
on | off
El valor predeterminado es desactivado.
No
auto_explain.log_wal boolean
on | off
El valor predeterminado es desactivado.
Compatible con PostgreSQL 13 y versiones posteriores.
No
auto_explain.log_verbose boolean
on | off
El valor predeterminado es desactivado.
No
auto_explain.sample_rate Float
0 ... 1
El valor predeterminado es 1.
No
autovacuum boolean
on | off
El valor predeterminado es activado.
Para obtener información sobre el uso que pueda afectar al SLA, consulta las directrices operativas de las instancias de Cloud SQL para PostgreSQL.
No
autovacuum_analyze_scale_factor float
0 ... 100
El valor predeterminado es 0,1.
No
autovacuum_analyze_threshold integer
0 ... 2147483647
El valor predeterminado es 50.
No
autovacuum_freeze_max_age integer
100000 ... 2000000000
El valor predeterminado es 200000000.
Para obtener información sobre el uso que pueda afectar al SLA, consulta las directrices operativas de las instancias de Cloud SQL para PostgreSQL.
autovacuum_max_workers integer
1 ... varies (see note)
El valor predeterminado es 3.
autovacuum_multixact_freeze_max_age integer
10000 ... 2000000000
El valor predeterminado es 400000000.
Para obtener información sobre el uso que pueda afectar al SLA, consulta las directrices operativas de las instancias de Cloud SQL para PostgreSQL.
autovacuum_naptime integer
1 ... 2147483s
El valor predeterminado es 60 s.
No
autovacuum_vacuum_cost_delay integer
0 ... 100 ms o -1 para usar el valor vacuum_cost_delay
En PostgreSQL 9.6, 10 y 11, el valor predeterminado es 2 ms.
No
autovacuum_vacuum_cost_limit integer
0 ... 10000 o -1 para usar el valor vacuum_cost_limit
El valor predeterminado es -1.
No
autovacuum_vacuum_insert_scale_factor float
0 ... 100
El valor predeterminado es 0,2.
No
autovacuum_vacuum_insert_threshold integer
-1 ... 2147483647
El valor predeterminado es 1000.
No
autovacuum_vacuum_scale_factor float
0 ... 100
El valor predeterminado es 0,2.
No
autovacuum_vacuum_threshold integer
0 ... 2147483647
El valor predeterminado es 50.
No
autovacuum_work_mem integer
0 ... 2147483647 KB o -1 para usar el valor maintenance_work_mem.
El valor predeterminado es -1.
No
backend_flush_after integer
0 ... 256
La unidad es 8 KB.
El valor predeterminado es 0.
No
bgwriter_delay integer
10 ... 10000 ms
El valor predeterminado es 200.
No
bgwriter_flush_after integer
0 ... 256
La unidad es 8 KB.
El valor predeterminado es 64.
No
bgwriter_lru_maxpages integer
0 ... 1073741823
El valor predeterminado es 100.
No
bgwriter_lru_multiplier Float
0 ... 10
El valor predeterminado es 2.
No
checkpoint_completion_target float
0.0 ... 1.0
El valor predeterminado es 0,9.
No
checkpoint_flush_after integer
0 ... 256
La unidad es 8 KB.
El valor predeterminado es 32.
No
checkpoint_timeout integer
30 ... 86,400s
El valor predeterminado es 300s.
Para obtener información sobre el uso que pueda afectar al SLA, consulta las directrices operativas de las instancias de Cloud SQL para PostgreSQL.
No
checkpoint_warning integer
0 ... 2147483647s
El valor predeterminado es 30 s.
No
client_connection_check_interval integer
0 ... 2147483647
El valor predeterminado es 0.
No
cloudsql.allow_passwordless_local_connections boolean
on | off
El valor predeterminado es off.
No
cloudsql.enable_anon boolean
on | off
El valor predeterminado es off.
No