di

Resumen

Objetivos
  • Crear una instancia MySQL a la medida de las necesidades

  • Configurar las conexiones permitidas a la instancia MySQL

  • Crear un segmento en Cloud Storage

  • Añadir archivos a un segmento Cloud Storage mediante la API de Cloud Storage

  • Usar el cliente MySQL de Cloud Shell

  • Crear una máquina virtual

  • Realizar una conexión SSH a la máquina virtual

1. Introducción

En este tutorial crearemos una base de datos MySQL de recursos reducidos y la inicializaremos con un script SQL disponible en una URL.

2. Crear la instancia MySQL

  1. En el Menú de navegación ir a la categoría Cloud SQL y seleccionar Instancias. Esto permite crear bases de datos MySQL, PostgreSQL y SQL Server totalmente gestionadas. Google Cloud se encargará de las tareas de replicación, actualización de parches, y demás.

    CloudSQLInicio
    Note

    Cloud SQL también permite la migración desde una base de datos MySQL existente a partir de su dirección IP pública.

  2. Seleccionar Crear Instancia. Aparecerán los distintos tipos de bases de datos disponibles en Google Cloud SQL. Elegir MySQL.

    CloudSQLTipos
  3. En el cuadro de dialogo Crear una instancia de MySQL configurar valores para el ID de instancia (p.e. sg) y la contraseña de root. Seleccionar MySQL 8.0 como versión de MySQL.

    Note

    Si aparece un mensaje indicando que no se ha habilitado la API de Cloud SQL y/o de Compute Engine, pulsar el botón Habilitar API para activarla. Esta acción habilita las API necesarias para crear y gestionar instancias Cloud SQL y máquinas virtuales de Compute Engine. Esta opción puede tardar unos minutos en completarse y sólo será necesario realizarla la primera vez que se cree una instancia Cloud SQL en el proyecto.

    Important

    Esta base de datos tendrá una IP pública y será accesible desde cualquier parte del mundo. Hay que tener especial cuidado al elegir la contraseña de root para evitar un acceso no deseado.

  4. En Elige una edición de Cloud SQL seleccionar Enterprise y Zona de pruebas.

  5. Seleccionar Mostrar opciones de configuración.

    1. Desplegar Configuración de la máquina. Como es para una prueba, elegir una máquina pequeña con 1 vCPU y 3.75 GB de RAM.

    2. En Almacenamiento dejar HDD con una capacidad de almacenamiento de 10 GB.

    3. Desactivar la opción Habilitar los aumentos de almacenamiento automáticos para evitar el crecimiento del almacenamiento.

    4. Dejar las opciones predeterminadas de Protección de datos.

    5. Dejar las opciones predeterminadas de Mantenimiento.

      Finalmente, el tipo de máquina y almacenamiento deben quedar así

      CloudSQLOpcionesElegidas
      Important

      Las opciones iniciales de Tipo de máquina y almacenamiento pueden ser muy elevadas para nuestras necesidades. Revisar que no sea una máquina virtual con 4 vCPU, 24 GB de RAM y 100 GB de SSD para datos como el de la figura. Hay que prestar atención a la configuración y ajustarla para no tener posteriormente sorpresas en la factuación.

  6. Finalmente crear la instancia

Unos minutos más tarde estará disponible la instancia.

Note

Una vez creada una instancia en Cloud SQL se podrá redimensionar tanto hacia arriba como hacia abajo. Ajustar hacia abajo será una opción permitida siempre que se pueda acomodar la instancia inicial en la instancia final.

3. Configurar las conexiones

De forma predeterminada, la instancia MySQL no admite conexiones externas. Podremos realizar una configuración para permitir la conexión desde una dirección, desde varias direcciones, desde un segmento de red, desde varios segmentos de red o desde todo Intenet. La configuración de las conexiones se realizará usando la notación CIDR

En nuestro ejemplo, aunque sea lo menos seguro permitiremos conexiones desde cualquier lugar. Para ello seguiremos estos pasos.

  1. Seleccionar Conexiones en el menú de la instancia MySQL.

    MySQLConexiones
  2. En Redes, pulsar sobre Agregar una red

  3. Asignaremos un nombre descriptivo (p.e. Internet)

  4. Configurar la máscara de red a 0.0.0.0/0 que representa cualquier dirección IP.

  5. Lee los riesgos de seguridad asociados a esta configuración y confirma marcando la casilla de verificación.

    MySQLAnadirRed
  6. Pulsar Listo. Aparecerá la red añadida.

    MySQLRedAnadida
  7. Guardar los cambios.

4. Importación de datos

En el enlace siguiente está disponible un script de inicialización de base de datos SG. Se trata de una base de datos de artículos deportivos (Sporting Goods).

Tenemos dos opciones principales para importar el script SQL:

  • Importarlo con el asistente de Cloud SQL desde Cloud Storage

  • Usar un cliente MySQL para lanzar el script. En esta opción caben dos opciones

    • Lanzar el script desde Cloud Shell

    • Lanzar el script desde una máquina virtual

Veamos cada una de las formas de hacerlo.

Note

Cloud Shell es una máquina virtual pequeña de administración que incorpora el SDK de Google Cloud y otras herramientas de interés (p.e. bash, vim, clientes de MySQL, Docker y Kubernetes).

4.1. Almacenar el script SQL en Cloud Storage

Cloud Storage proporciona almacenamiento de objetos, una forma de almacenar cualquier tipo de archivos a los que se proporciona una URL que permite su acceso universal. Los archivos son organizados en depósitos o buckets.

  1. En el menú Cloud Storage seleccionar Buckets. Aparecerá el Navegador de Storage mostrando una lista vacía de buckets

    StorageInicial
  2. Seleccionar Crear bucket. En el cuadro de diálogo asignar un nombre al bucket. Debe tratarse de un nombre único ya que se usará para componer la URL de los objetos (archivos) que contenga. Revisar el resto de opciones y crear el bucket.

    StorageNombre
    Note

    Aparecerá un cuadro de diálogo indicando el nivel de acceso al bucket. De forma predeterminada, el bucket no es público y sólo el propietario del proyecto podrá acceder a él. Por ahora dejaremos el bucket privado.

    Subida de archivos al bucket

    Se pueden subir archivos al bucket desde nuestro propio ordenador usando la interfaz web o desde una terminal donde esté instalada la API de Cloud Storage. Cloud Shell se inicializa con dicha API y se podrán copiar archivos desde Cloud Shell a un bucket de Cloud Storage. Previamente se habrán descargado los archivos a Cloud Shell.

  3. Abrir Cloud Shell para descargar el script SQL y copiarlo al bucket.

  4. Google Cloud nos advierte que necesita incluir nuestras credenciales en Cloud Shell. Pulsaremos Autorizar.

    CloudShellAutorizar
  5. Descargar a Cloud Shell el script SQL de creación de la base de datos SG.

    $ curl https://gist.githubusercontent.com/ualmtorres/eb328b653fcc5964f976b22c320dc10f/raw/448b00c44d7102d66077a393dad555585862f923/init.sql --output init.sql
  6. Copiar el archivo init.sql de Cloud Shell al segmento

    gsutil cp init.sql gs://cloud-computing-2026-mtorres/init.sql (1)
    1. Cambiar el nombre del segmento `cloud-computing-2026-mtorres por el que hayas usado

    Si se abre el segmento se puede comprobar que el archivo ha sido copiado al segmento desde Cloud Shell.

    StorageInitCopiado
    Note

    Más información sobre copia de archivos en la https://cloud.google.com/storage/docs/gsutil/commands/cp[documentación oficial sobre gsutil, el CLI que permite acceder a Cloud Storage desde la línea de comandos.

  7. Abrir la instancia MySQL, seleccionar Importar en la barra de herramientas superior.

  8. Pulsar Examinar para seleccionar el archivo

    MySQLImportarInicio
  9. Seleccionar el bucket (p.e. cloud-computing-2026-mtorres) y el archivo init.sql del bucket

    MySQLSeleccionarArchivo

    El archivo quedará seleccionado.

    MySQLArchivoSeleccionado

    Pulsar el botón Importar. La base de datos SG quedará importada.

    MySQLSGCreada

4.2. Usar el cliente MySQL de Cloud Shell

Cloud Shell incorpora un cliente MySQL. Desde él podremos iniciar una sesión en la instancia MySQL y también podremos importar el script de la base de datos SG.

  1. Abrir Cloud Shell para descargar el script SQL.

  2. Google Cloud nos advierte que necesita incluir nuestras credenciales en Cloud Shell. Pulsaremos Autorizar.

    CloudShellAutorizar
  3. Descargar a Cloud Shell el script SQL de creación de la base de datos SG.

    $ curl https://gist.githubusercontent.com/ualmtorres/eb328b653fcc5964f976b22c320dc10f/raw/448b00c44
    d7102d66077a393dad555585862f923/init.sql --output init.sql
  4. Ejecutar el script de creación de la base de datos SG en la instancia MySQL

mysql -h 34.122.xxx.xxx -u root -p < init.sql

4.3. Creación de una máquina virtual

Una opción más laboriosa y quizá menos justificada en este caso consiste en crear una máquina virtual en la que se instalará el cliente MySQL para la carga de datos e interacción con el servidor MySQL creado previamente.

Note

La opción de crear una instancia para instalar el cliente MySQL no es necesario porque esa función la podemos realizar con Cloud Shell, que ya incorpora un cliente MySQL entre su set de herramientas de administración útiles.

  1. En el Menú de navegación seleccionar en el bloque COMPUTE la opción Compute Engine. En el submenú seleccionar Instancias de VM.

    MenuInstanciasDeVM
  2. Si no hay ninguna máquina virtual creada aparecerá una descripción de Compute Engine. Pulsaremos el botón Crear.

    InstanciasInicio
  3. Asignar un nombre a la instancia (p.e. basica) dejando las opciones de región y zona predeterminadas.

  4. Modificar la configuración de la máquina virtual indicando

    • Serie N1

    • Tipo de máquina g1-small (1 vCPU y 1.7 GB RAM) de núcleo compartido.

  5. Si no se modificada nada en SO y almacenamiento, se usará un disco de 10 GB con Debian 12 bookworm como sistema operativo.

    InstanciasCrearBasica
  6. Pulsar el botón Crear.

    Tras unos instantes, la máquina virtual estará creada y contará con una dirección IP a la que nos podríamos conectar mediante SSH descargando previamente el certificado.

InstanciaCreada

+ No obstante, es más sencillo abrir directamente la consola SSH que ofrece Google Cloud y que se muestra a la derecha de cada instancia de la lista.

+ image::images/InstanciaCreadaSSH.png[]

+ Esto abrirá una sesión SSH en el navegador.

+ image::images/InstanciaTerminal.png[]

+ En esa terminal instalaremos el cliente MySQL con estos comandos

+

sudo apt-get update
sudo apt-get install default-mysql-client (1)
  1. Debian usa el paquete default-mysql-client como cliente MySQL

    A continuación se siguen los mismos pasos que se siguieron para crear la base de datos desde Cloud Shell (descargar el script y ejecutarlo con el cliente MySQL).

    1. Descargar a la máquina virtual el script SQL de creación de la base de datos SG.

      $ curl https://gist.githubusercontent.com/ualmtorres/eb328b653fcc5964f976b22c320dc10f/raw/448b00c44d7102d66077a393dad555585862f923/init.sql --output init.sql
    2. Ejecutar el script de creación de la base de datos SG en la instancia MySQL

mysql -h 34.122.xxx.xxx -u root -p < init.sql

5. Conexión a la instancia MySQL

En los pasos anteriores hemos creado una instancia MySQL y se ha inicializado una base de datos (SG) a partir de un script siguiendo tres opciones:

  • Guardando el script en un segmento de Cloud Storage e importándolo con la herramienta de importación.

  • Guardando el script en Cloud Shell y cargando el script desde el cliente MySQL incoporado de serie en Cloud Shell.

  • Creando una máquina virtual para instalar un cliente MySQL. Posteriormente, se ha guardado el script en la máquina virtual y se ha lanzado contra la instancia MySQL.

A continuación abriremos una Cloud Shell o una sesión SSH en la máquina virtual. Desde la terminal invocaremos al cliente MySQL y conectaremos con la instancia MySQL usando las credenciales

mysql -h 34.122.xxx.xxx -u root -p

Una vez iniciada la sesión podremos mostrar las bases de datos y ver que SG se encuentra creada

mysql> show databases; (1)
+--------------------+
| Database           |
+--------------------+
| information_schema |
| SG                 |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.10 sec)

mysql> use SG (2)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

mysql> show tables; (3)
+--------------+
| Tables_in_SG |
+--------------+
| s_customer   |
+--------------+
1 row in set (0.11 sec)

mysql> select id, name (4)
    -> from s_customer
    -> limit 10;
+-----+----------------------+
| id  | name                 |
+-----+----------------------+
| 201 | One Sport            |
| 202 | Deportivo Caracas    |
| 203 | New Delhi Sports     |
| 204 | Ladysport            |
| 205 | Kim's Sporting Goods |
| 206 | Sportique            |
| 207 | Tall Rock Sports     |
| 208 | Muench Sports        |
| 209 | Beisbol Si!          |
| 210 | Futbol Sonora        |
+-----+----------------------+
10 rows in set (0.10 sec)
  1. Mostrar las bases de datos

  2. Seleccionar la base de datos SG

  3. Mostrar las tablas de la base de datos seleccionada

  4. Mostrar unos datos de ejemplo