¿Cómo ver bases de datos en AWS?

Gestiona Bases de Datos MySQL en Cloud SQL

Valoración: 4.01 (1841 votos)

En la era digital actual, gestionar datos eficientemente es crucial para el éxito de cualquier aplicación o servicio. Las bases de datos MySQL son una opción popular y robusta, y desplegarlas en un entorno de nube como Google Cloud SQL ofrece escalabilidad, rendimiento y mantenimiento simplificado. Una vez que tienes tu instancia de Cloud SQL funcionando, el siguiente paso fundamental es saber cómo manejar las bases de datos dentro de ella: crearlas para tus aplicaciones, listarlas para tener una visión general y, cuando sea necesario, eliminar las que ya no necesitas.

Este artículo te guiará a través de los procesos esenciales para gestionar tus bases de datos MySQL en Cloud SQL, basándonos en las herramientas y métodos proporcionados por Google Cloud. Exploraremos las bases de datos que vienen por defecto, cómo listar las tuyas y, en detalle, los diferentes caminos para borrarlas.

¿Qué base de datos utiliza Amazon?
Amazon Relational Database Service (o Amazon RDS) es un servicio de base de datos relacional distribuido de Amazon Web Services (AWS). Se trata de un servicio web que se ejecuta en la nube y está diseñado para simplificar la configuración, el funcionamiento y el escalado de una base de datos relacional para su uso en aplicaciones.
Índice de Contenido

Comprendiendo tu Instancia de Cloud SQL y las Bases de Datos del Sistema

Una instancia de Cloud SQL es, esencialmente, un servidor de base de datos gestionado. Al crear una instancia nueva, no está vacía del todo. Incluye varias bases de datos del sistema que son vitales para el funcionamiento y la monitorización del propio servidor MySQL. Conocerlas te ayuda a entender mejor tu entorno:

  • information_schema: Esta base de datos proporciona acceso a los metadatos de la base de datos. Contiene información sobre todas las bases de datos, tablas, columnas, tipos de datos, privilegios, etc., que existen en el servidor. Es una herramienta invaluable para consultar la estructura de tu base de datos sin necesidad de acceder a los datos reales.
  • mysql: Es el esquema del sistema principal. Almacena tablas que contienen información requerida por el servidor MySQL mientras se ejecuta. Aquí se guarda la información sobre los usuarios, permisos, configuraciones del servidor, zonas horarias y otros datos operativos esenciales para MySQL.
  • performance_schema: Diseñada para la monitorización de bajo nivel de la ejecución del servidor MySQL. Recopila datos sobre eventos del servidor a nivel de bajo impacto, permitiendo a los administradores identificar cuellos de botella y analizar el rendimiento de las consultas y operaciones.
  • sys: Esta base de datos contiene un conjunto de objetos (vistas, procedimientos almacenados, funciones) que simplifican la interpretación de los datos recopilados por `performance_schema`. Ofrece una vista más legible y útil de la información de rendimiento, ayudando a los DBAs y desarrolladores a diagnosticar problemas de rendimiento de manera más eficiente.

Estas bases de datos del sistema son fundamentales y generalmente no deben ser modificadas ni eliminadas por los usuarios.

Creando Bases de Datos en Cloud SQL (Contexto)

Aunque los pasos detallados para la creación pueden variar ligeramente según la herramienta que utilices (Consola de Google Cloud, gcloud CLI, API de Cloud SQL Admin o cliente MySQL), el proceso implica especificar un nombre para la nueva base de datos dentro de tu instancia de Cloud SQL. Es importante tener en cuenta algunos criterios:

  • La longitud máxima permitida para el nombre de una base de datos es de 64 caracteres.
  • Existen otras restricciones sobre los caracteres válidos, que puedes consultar en la documentación oficial de MySQL sobre nombres de objetos de esquema.

Al crear una base de datos, puedes especificar un grupo de caracteres (charset) y una intercalación (collation) personalizados. Si no lo haces, Cloud SQL asignará valores predeterminados que dependen de la versión de MySQL y el método de creación:

  • MySQL 5.6, 5.7 (creado con Consola, API, gcloud CLI, Terraform o cliente MySQL):
    • Grupo de caracteres: `utf8`
    • Intercalación: `utf8_general_ci`
  • MySQL 8.0.x y versiones posteriores (creado con la Consola de Google Cloud):
    • Grupo de caracteres: `utf8`
    • Intercalación: `utf8_general_ci`
  • MySQL 8.0.x y versiones posteriores (creado con API de Cloud SQL Admin, gcloud CLI o Terraform):
    • Grupo de caracteres: `utf8mb4`
    • Intercalación: `utf8mb4_0900_ai_ci`

Si necesitas una configuración diferente, es recomendable especificarla durante la creación. Si la creas con los valores predeterminados y luego necesitas cambiarlos, deberás seguir un proceso de actualización de la configuración de la base de datos existente, lo cual puede ser más complejo.

Listando tus Bases de Datos

Saber qué bases de datos existen en tu instancia es esencial para la administración. Puedes listarlas fácilmente utilizando la Consola de Google Cloud o un cliente MySQL conectado a tu instancia.

Usando la Consola de Google Cloud

La Consola web ofrece una forma visual e intuitiva de ver tus bases de datos:

  1. Ve a la página de Instancias de Cloud SQL en la Consola de Google Cloud.
  2. Haz clic en el nombre de la instancia que te interesa para abrir su página de descripción general.
  3. En el menú de navegación del lado izquierdo, busca y haz clic en la opción "Bases de datos".

Verás una lista de todas las bases de datos presentes en la instancia, incluyendo las del sistema y las que hayas creado tú.

Usando un Cliente MySQL

Si estás conectado a tu instancia de Cloud SQL usando un cliente MySQL (como el cliente de línea de comandos `mysql`), puedes listar las bases de datos con un simple comando SQL:

SHOW DATABASES;

Este comando te mostrará una lista similar a la que verías en la Consola, permitiéndote verificar la existencia y los nombres de tus bases de datos directamente desde la interfaz del cliente.

Eliminando Bases de Datos

La tarea de eliminar una base de datos es algo que realizarás cuando un proyecto finalice, necesites liberar espacio o limpiar entornos de desarrollo/prueba. Es una operación irreversible, por lo que debes proceder con precaución. Cloud SQL ofrece varios métodos para realizar esta tarea, cada uno adecuado para diferentes flujos de trabajo.

Eliminar Usando la Consola de Google Cloud

La Consola es ideal para eliminaciones manuales y visuales:

  1. En la Consola de Google Cloud, navega a la página de Instancias de Cloud SQL y haz clic en el nombre de tu instancia.
  2. En el menú lateral izquierdo, selecciona "Bases de datos".
  3. En la lista de bases de datos, encuentra la que deseas eliminar. A la derecha de su nombre, verás un ícono de papelera. Haz clic en él.
  4. Aparecerá un diálogo de confirmación para eliminar la base de datos. Para proceder, deberás ingresar el nombre exacto de la base de datos en el campo provisto.
  5. Una vez que hayas ingresado el nombre correctamente, haz clic en el botón "Borrar".

La Consola iniciará el proceso de eliminación de la base de datos seleccionada.

Eliminar Usando gcloud CLI

La herramienta de línea de comandos `gcloud` es excelente para automatización o para quienes prefieren trabajar desde la terminal:

gcloud sql databases delete DATABASE_NAME --instance=INSTANCE_NAME

Reemplaza `DATABASE_NAME` con el nombre de la base de datos que quieres eliminar e `INSTANCE_NAME` con el nombre de tu instancia de Cloud SQL. Este comando enviará una solicitud a la API de Cloud SQL Admin para realizar la eliminación.

Eliminar Usando la API de REST

Para integraciones programáticas o scripts avanzados, la API de REST de Cloud SQL Admin es la opción adecuada. Utilizas el método `databases:delete`.

REST v1

Método HTTP y URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME

Debes reemplazar `PROJECT_ID`, `INSTANCE_ID` y `DATABASE_NAME` con los valores correspondientes a tu proyecto, instancia y base de datos. Puedes enviar esta solicitud usando herramientas como `curl` o `PowerShell`.

Ejemplo con `curl` (Linux, macOS, Cloud Shell):

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME"

Este comando utiliza la autenticación de `gcloud` para obtener un token de acceso y lo incluye en el encabezado de autorización.

Ejemplo con `PowerShell` (Windows):

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME" | Select-Object -Expand Content

Ambos métodos enviarán una solicitud que, si es exitosa, retornará una respuesta JSON indicando que la operación de eliminación ha sido aceptada y está en proceso (estado 'PENDING').

REST v1beta4

Existe una versión anterior de la API (`v1beta4`) que también soporta la eliminación de bases de datos con un método similar:

Método HTTP y URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME

Los ejemplos con `curl` y `PowerShell` serían análogos, simplemente cambiando la URL base de la API.

Ejemplo con `curl`:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME"

Ejemplo con `PowerShell`:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_NAME" | Select-Object -Expand Content

La respuesta JSON esperada es similar a la de la versión `v1`, detallando la operación iniciada.

Es importante notar que al eliminar una base de datos utilizando gcloud CLI o la API de REST, se eliminan todos los archivos dentro del directorio de la base de datos en el sistema de archivos subyacente de la instancia. Esto incluye archivos temporales o auxiliares que MySQL pueda haber creado (como los archivos `#sql-*` generados durante operaciones `ALTER TABLE` en versiones antiguas como MySQL 5.6 y 5.7), asegurando una limpieza completa.

Eliminar Usando el Cliente MySQL

También puedes intentar eliminar una base de datos directamente usando comandos SQL a través de un cliente MySQL conectado a tu instancia:

DROP DATABASE database_name;

Reemplaza `database_name` por el nombre de la base de datos que quieres eliminar. Sin embargo, ten en cuenta una particularidad importante al usar este método en Cloud SQL:

Si el directorio de la base de datos en el sistema de archivos de la instancia contiene archivos que la base de datos no usaba directamente (como los archivos `#sql-*` mencionados anteriormente), el comando `DROP DATABASE` puede generar errores (por ejemplo, indicando que no se puede eliminar el directorio, como `errno: 39` o `errno: 17`). Esto sucede porque el comando `DROP DATABASE` de MySQL estándar puede tener problemas para limpiar completamente directorios con contenido inesperado.

Si encuentras este error al usar `DROP DATABASE` a través del cliente MySQL, la solución es simple: repite la operación de eliminación utilizando uno de los otros métodos (la Consola, el comando `gcloud` o una llamada a la API de REST). Estos métodos gestionados por Cloud SQL están diseñados para manejar esta limpieza de archivos adicionales correctamente.

Comparativa de Métodos para Eliminar Bases de Datos

Aquí te presentamos una tabla comparativa de los métodos de eliminación disponibles en Cloud SQL:

MétodoIdeal paraFacilidad de Uso (General)AutomatizaciónManejo de Archivos AdicionalesRequiere Conexión Cliente Directa
Consola de Google CloudEliminaciones manuales, usuarios nuevos, visibilidadMuy AltaBajaCompleto (gestionado por Cloud SQL)No
gcloud CLIScripts, automatización básica, usuarios de terminalAltaAltaCompleto (gestionado por Cloud SQL)No
API de RESTIntegraciones complejas, flujos de trabajo personalizados, desarrolloMedia-Alta (requiere conocimiento de API)Muy AltaCompleto (gestionado por Cloud SQL)No
Cliente MySQL (`DROP DATABASE`)Tareas rápidas desde cliente, familiaridad con SQLAltaMedia (en scripts SQL)Puede fallar si hay archivos extra; requiere método alternativo

Como puedes ver, los métodos gestionados por Cloud SQL (Consola, gcloud, API) ofrecen una mayor robustez y limpieza garantizada en comparación con el comando `DROP DATABASE` ejecutado directamente a través de un cliente MySQL.

Consideraciones Importantes al Gestionar Bases de Datos

Al trabajar con bases de datos en Cloud SQL, ten siempre en cuenta:

  • Irreversibilidad de la Eliminación: Borrar una base de datos es una acción permanente. Asegúrate de tener copias de seguridad si hay datos que podrías necesitar en el futuro.
  • Grupo de Caracteres e Intercalación: La elección correcta al crear la base de datos es importante para el manejo de datos y la compatibilidad con tu aplicación. Si los valores predeterminados no son adecuados, especifícalos explícitamente durante la creación. Modificarlos posteriormente puede ser un proceso que requiera exportar e importar datos.
  • Impacto en las Aplicaciones: Asegúrate de que ninguna aplicación o servicio esté utilizando la base de datos antes de eliminarla para evitar interrupciones.

Preguntas Frecuentes (FAQ)

¿Qué son las bases de datos del sistema en Cloud SQL?

Son bases de datos (`information_schema`, `mysql`, `performance_schema`, `sys`) que se crean automáticamente con cada instancia de Cloud SQL. Contienen metadatos, información de configuración, seguridad y rendimiento del servidor MySQL. Son esenciales para el funcionamiento de la instancia y no deben ser eliminadas ni modificadas por usuarios generales.

¿Cuál es la longitud máxima permitida para el nombre de una base de datos en Cloud SQL?

El nombre de una base de datos en Cloud SQL (y en MySQL en general) no puede exceder los 64 caracteres.

¿Qué grupo de caracteres e intercalación se usan por defecto al crear una base de datos si no especifico?

Depende de la versión de MySQL y del método de creación. Para MySQL 5.6/5.7 o MySQL 8.0+ creado con la Consola, suele ser `utf8`/`utf8_general_ci`. Para MySQL 8.0+ creado con gcloud CLI, API o Terraform, suele ser `utf8mb4`/`utf8mb4_0900_ai_ci`. Es importante verificar la configuración por defecto para tu versión y método.

¿Puedo recuperar una base de datos después de borrarla usando los métodos de eliminación?

No. La eliminación de una base de datos a través de la Consola, gcloud CLI, API o el comando `DROP DATABASE` es una operación destructiva e irreversible. La única forma de 'recuperar' los datos sería restaurando una copia de seguridad previa de la instancia o importando datos desde un respaldo exportado.

¿Por qué el comando DROP DATABASE en el cliente MySQL puede fallar a veces en Cloud SQL?

El comando `DROP DATABASE` del cliente MySQL puede fallar (con errores como `errno: 39` o `errno: 17`) si el directorio físico de la base de datos en el servidor contiene archivos que MySQL no eliminó directamente (como archivos temporales #sql-* de operaciones ALTER TABLE antiguas). Los métodos gestionados por Cloud SQL (Consola, gcloud, API) limpian estos archivos adicionales correctamente.

Conclusión

Manejar las bases de datos dentro de tu instancia de Cloud SQL es una habilidad fundamental para cualquier desarrollador o administrador que trabaje con datos en Google Cloud. Comprender las bases de datos del sistema, conocer las opciones de creación (y sus valores por defecto), saber cómo listar las bases existentes y dominar los distintos métodos para eliminar bases de datos te permite administrar tu entorno de manera eficiente y segura. Siempre procede con cuidado al eliminar datos y aprovecha la flexibilidad que Cloud SQL ofrece a través de su Consola, herramientas de línea de comandos y API para adaptarte a tus necesidades operativas.

Si quieres conocer otros artículos parecidos a Gestiona Bases de Datos MySQL en Cloud SQL puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir