Brains4Cloud
ESEN
Practicar

Tema 6 de 10

D3 · Garantizar el funcionamiento de una solución en la nube

Operar bases de datos

La segunda mitad del apartado 3.2 del temario trata del día a día de los datos: consultar cada base de datos, estimar el coste, hacer copias de seguridad y restaurarlas, revisar el estado de los trabajos de BigQuery y Dataflow y vigilar toda la flota con Database Center. La elección del servicio está en el dominio D2.

Consultar datos de cada base de datos

Casi todas las bases de datos tienen un editor integrado en la consola, así que no hace falta instalar un cliente de terceros para lanzar una consulta.

ServicioEn la consolaDesde la línea de comandos
Cloud SQL Studio: explorador, editor de consultas y tabla de resultados; admite DDL, DML y DQLgcloud sql connect abre el cliente de la base de datos (mysql, psql…)
AlloyDB Studio: interfaz SQL interactiva en la consolaCliente de PostgreSQL
Spanner Studio: explorador, editor de consultas y resultadosgcloud spanner databases execute-sql
Bigtable Studio: generador de consultas sin código y editor SQLCLI cbt (componente de gcloud)
Firestore Studio: ver, consultar (pestaña Query Builder), añadir, editar y borrar datosBibliotecas cliente
Editor de consultas de BigQuery Studiobq query --use_legacy_sql=false
gcloud sql connect my-instance --user=root

gcloud spanner databases execute-sql example-database \
  --instance=example-instance --sql='SELECT * FROM MyTable WHERE MyKey = 1'

bq query --use_legacy_sql=false 'SELECT COUNT(*) FROM `my-project.sales.orders`'

gcloud components install cbt
cbt listinstances

La CLI cbt no implementa reintentos inteligentes ni gestión de errores; para producción Google recomienda las bibliotecas cliente de Bigtable o la consola. Sus opciones (proyecto, instancia…) se pueden guardar en un archivo .cbtrc.

Un dry run valida la consulta sin ejecutarla y devuelve una estimación de los bytes que procesaría (el coste en modo bajo demanda). No usa slots y no se cobra. La estimación se puede llevar a la calculadora de precios.

bq query --use_legacy_sql=false --dry_run \
  'SELECT name FROM `my-project.sales.customers` WHERE country = "ES"'

Cuándo no es fiable

En consultas federadas sobre fuentes externas puede indicar 0 bytes aunque la consulta real sí se cobre. En tablas con seguridad a nivel de fila siempre devuelve 0 bytes.

Las copias de Cloud SQL son incrementales y se cifran con claves de Google o con CMEK. Al crear una instancia nueva hay que elegir entre dos opciones de copia:

Copias mejoradas

Gestionadas por Backup and DR Service en una bóveda de copias centralizada, con un plan de copias. Retención de hasta 10 años.

Copias estándar

Gestionadas por Cloud SQL. Las copias bajo demanda se guardan hasta que se borran a mano.

TipoCómo funciona
Bajo demandaSe crea en cualquier momento, por ejemplo antes de una operación arriesgada
AutomáticaProgramada. Google recomienda no borrarlas a mano porque las necesita la recuperación a un momento dado
FinalSe toma al borrar la instancia (se puede activar para que sea automática). Por defecto se conserva 30 días; de 1 a 365 días en copias estándar o hasta 10 años en mejoradas. Solo en instancias principales, no en réplicas
gcloud sql backups create --async --instance=my-instance
gcloud sql backups list --instance=my-instance
gcloud sql backups restore BACKUP_ID --restore-instance=target-instance
  • Restaurar sobre una instancia existente sobrescribe todos sus datos, incluidos los registros previos para la recuperación a un momento dado.
  • Al borrar una instancia, sus copias bajo demanda y automáticas pasan a ser copias retenidas a nivel de proyecto, que se pueden restaurar en una instancia nueva o existente.
  • Restaurar desde una copia no conserva la IP de la instancia borrada. Para recuperarla con su IP, Cloud SQL guarda las copias de las instancias borradas durante 4 días, y en ese plazo se puede pedir a Customer Care que la recupere tal como estaba.

Recuperación a un momento dado (PITR)

PITR restaura una instancia principal al estado de un instante concreto, esté activa o borrada. Siempre crea una instancia nueva: no se puede aplicar sobre una instancia existente. En MySQL necesita el registro binario y las copias activados, con registros continuos desde la última copia anterior al incidente. El método recomendado es indicar una marca de tiempo; en la consola se hace con Create clone y Clone from an earlier point in time.

gcloud sql instances clone SOURCE_INSTANCE NEW_INSTANCE \
  --point-in-time='2026-10-24T08:15:00.000Z'

Los cambios que ocurren en esa marca de tiempo o después no aparecen en la instancia nueva.

Copias en Spanner, Firestore, AlloyDB y Bigtable

  • Copias completas bajo demanda; con una programación, completas o incrementales.
  • Retención de hasta 1 año. La copia se guarda en la misma instancia (y región) que la base; se puede copiar a otra región o proyecto.
  • versionTime es el instante cuyos datos contiene la copia; createTime, cuándo se creó. Las programadas empiezan en las 4 horas siguientes a versionTime.
gcloud spanner backups create my-backup --instance=my-instance \
  --database=my-db --retention-period=2w

  • Programaciones de copia diaria o semanal, como máximo una de cada tipo por base de datos. No se elige la hora.
  • Retención de hasta 14 semanas. La copia está en la misma ubicación que la base.
  • Se restaura siempre en una base de datos nueva. Borrar la base no borra sus copias.
  • Roles específicos: roles/datastore.backupsAdmin, roles/datastore.backupSchedulesAdmin, roles/datastore.restoreAdmin…
gcloud firestore backups schedules create --database='(default)' \
  --recurrence=daily --retention=4w

gcloud firestore databases restore \
  --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
  --destination-database=restored-db

  • Copia y recuperación continuas activadas por defecto en todos los clústeres: crean un clúster nuevo con el estado de cualquier instante reciente, con granularidad de microsegundos. La ventana es de 14 días por defecto, configurable de 1 a 35.
  • Copias bajo demanda (completas), automáticas (incrementales) y del sistema. Se restauran en un clúster nuevo.
  • Igual que Cloud SQL, ofrece copias mejoradas (Backup and DR) o estándar.

  • Copias estándar (retención larga) o hot (restauración más rápida, para producción).
  • Copia automática diaria o bajo demanda; son incrementales.
  • Retención de hasta 90 días en la edición Enterprise o 365 días en Enterprise Plus (por ejemplo, 15d).
  • Se restaura en una tabla nueva, también en otra instancia.
gcloud bigtable backups create my-backup --instance=my-instance \
  --cluster=my-cluster --table=my-table --retention-period=7d

Todos los datos de Google Cloud se cifran en reposo con AES-256 y claves de Google, sin configurar nada. Con CMEK las claves las creas tú en Cloud KMS: controlas su rotación, su acceso y su estado, ves sus registros de uso y cumples normativas que exigen claves propias. El cifrado y descifrado lo hace el agente de servicio del recurso de forma transparente.

  • Cloud KMS Autokey crea los llaveros y claves al crear el recurso y concede los roles a los agentes de servicio. Google lo recomienda si sus claves cumplen tus requisitos.
  • Con copias mejoradas de Cloud SQL y CMEK, el agente de servicio de Backup and DR necesita roles/cloudkms.cryptoKeyEncrypterDecrypter sobre la clave.
  • Cloud KMS cobra por versión de clave y por operación criptográfica; el cifrado por defecto es gratuito.

Estado de los trabajos de BigQuery

Cada carga, exportación, consulta o copia crea un trabajo asíncrono. Sus estados son PENDING, RUNNING y DONE; si un trabajo terminado falló, incluye errorResult. El coste se factura al proyecto que ejecuta el trabajo.

bq ls --jobs --filter="states:RUNNING,PENDING"
bq show --jobs JOB_ID
bq cancel JOB_ID
bq wait JOB_ID
RolSobre los trabajos
roles/bigquery.jobUserEjecutar, listar, ver y cancelar los suyos
roles/bigquery.userLo mismo, pero es más permisivo
roles/bigquery.resourceAdminListar todos y ver sus metadatos
roles/bigquery.adminListar todos, ver sus metadatos y cancelar cualquiera

La interfaz de supervisión de la consola muestra la lista de trabajos (en ejecución y los de los últimos 30 días), el grafo del trabajo con cada paso, los detalles de ejecución, métricas, coste estimado, recomendaciones, gráficos de autoescalado, alertas preconfiguradas para streaming, los registros del pipeline y muestreo de datos.

Cancel

Batch y streaming. Para de inmediato, incluidos los datos en búfer: se pueden perder los datos que se están procesando. Un trabajo cancelado no se reinicia.

Drain

Solo streaming. Deja de leer datos nuevos y termina de procesar los que tiene en búfer.

Force cancel

Para trabajos atascados en la cancelación normal; antes hay que intentar un cancel.

gcloud dataflow jobs list --region=europe-west1
gcloud dataflow jobs describe JOB_ID --region=europe-west1
gcloud dataflow jobs drain JOB_ID --region=europe-west1
gcloud dataflow jobs cancel JOB_ID --region=europe-west1

Los trabajos de Dataflow no se pueden borrar, solo archivar; los terminados se eliminan a los 30 días. Antes de parar un pipeline de streaming conviene hacer un snapshot para conservar su estado.

Database Center

Panel con asistencia de IA que ofrece una vista centralizada de toda la flota de bases de datos, de todos los proyectos. Usa datos de los proyectos y de Security Command Center para mostrar problemas de salud y recomendaciones, y tiene un chat de Gemini para preguntar por ellos.

  • Muestra el inventario, los motores y versiones en uso, qué bases críticas no están optimizadas para la disponibilidad, cuáles no tienen copias, cuáles no siguen buenas prácticas de seguridad y cuáles no cumplen estándares del sector.
  • Monitoriza la salud de AlloyDB, Bigtable, Cloud SQL (MySQL, PostgreSQL y SQL Server), Firestore, Memorystore for Redis y Redis Cluster, Spanner y Oracle Database@Google Cloud. De BigQuery solo muestra el inventario.
  • Los datos no son en tiempo real: suelen actualizarse en minutos, pero pueden tardar hasta 24 horas.

Escenarios de examen

SituaciónRespuestaPor qué
Recuperar una base de Cloud SQL al estado de hace 2 horas, antes de un DELETE erróneoPITR con gcloud sql instances clone --point-in-timeSiempre crea una instancia nueva.
Saber cuántos bytes procesará una consulta de BigQuery sin pagarDry run (--dry_run)No usa slots ni se cobra.
Conservar los datos de una instancia de Cloud SQL que se va a borrarCopia final al borrar la instanciaPor defecto se conserva 30 días.
Parar un pipeline de streaming sin perder los datos que ya está procesandoDrain del trabajo de DataflowDeja de leer y termina lo que tiene en búfer.
Ver qué bases de datos de toda la organización no tienen copias de seguridadDatabase CenterVista centralizada de la salud de la flota.
Copias diarias automáticas de una base de Firestore con retención de 4 semanasgcloud firestore backups schedules createRetención máxima de 14 semanas.
Restaurar una copia de Spanner en otra regiónCopiar la copia de seguridad a una instancia de la otra regiónLa copia vive en la misma instancia que la base.
Ejecutar una consulta SQL en Spanner desde la consola sin instalar nadaSpanner StudioEditor de consultas integrado en la consola.

Trampas frecuentes del examen

❓ ¿Se puede hacer PITR de Cloud SQL sobre la misma instancia?

No. La recuperación a un momento dado siempre crea una instancia nueva (un clon).

❓ ¿Restaurar una copia sobre una instancia existente conserva sus datos actuales?

No. Sobrescribe todos los datos de la instancia de destino.

❓ ¿Un dry run de BigQuery cuesta dinero?

No. Valida la consulta y estima los bytes sin usar slots ni cobrar.

❓ ¿Drain sirve para un trabajo batch de Dataflow?

No. Drain es solo para streaming; en batch se usa cancel.

❓ ¿Database Center muestra los datos en tiempo real?

No. Suele actualizarse en minutos, pero puede tardar hasta 24 horas.

❓ ¿Se puede restaurar una copia de Firestore sobre la base original?

No. Siempre se restaura en una base de datos nueva.

¿Entendiste este tema?

Pon a prueba lo que acabas de aprender

A las 10:40 alguien ejecutó un DELETE sin WHERE en una base de Cloud SQL para MySQL que tiene copias automáticas y registro binario activados. Hay que recuperar los datos tal como estaban a las 10:39 sin perder los cambios de primera hora de la mañana. ¿Qué haces?

¿Listo para poner a prueba "Operar bases de datos"?

Preguntas originales, cada una con su explicación.

Empezar un simulacro