Última actualización: 2025-03-12
Amazon Relational Database Service (RDS) es un servicio de base de datos relacional administrado que permite a los usuarios aprovisionar, operar y escalar bases de datos relacionales en la nube de AWS. Proporciona una infraestructura de base de datos gestionada, lo que significa que AWS se encarga de las tareas administrativas, como el aprovisionamiento de hardware, la instalación de software, la aplicación de parches y las copias de seguridad. Los usuarios pueden elegir entre varios motores de bases de datos, incluidos MySQL, PostgreSQL, Oracle, SQL Server y MariaDB.
Crear una instancia de base de datos MySQL: Desde el Learner Lab ir a la consola de AWS y seleccionar Aurora and RDS. Presionar el botón de Crear base de datos
y completar el formulario con la siguiente información (las opciones no mencionadas aquí se deben dejar con su valor por omisión):
Tipo de motor:
MySQL
Plantillas:
Capa gratuita
Identificador de instancias de bases de datos:
Nombre de la instancia de base de datos. Ejemplo: bd-desarrollo-web
Contraseña maestra: Contraseña para administrar la instancia de base de datos.
Confirmar la contraseña maestra: Repetir la contraseña del punto anterior.
Acceso público:
Sí
Grupo de seguridad de VPC (firewall):
Crear nuevo
Nuevo nombre del grupo de seguridad de VPC:
Nombre del grupo de seguridad para la instancia de base de datos. Ejemplo:
gpo-seguridad-bd-desarrollo-web
Finalmente, presionar el botón Crear base de datos
.
Después de varios minutos la instancia de base de datos quedará creada y en estado Disponible
. Una vez que esto ocurra, darle clic a la liga correspondiente en la columna de Identificador de base de datos
. En la página desplegada buscar y tomar nota del Punto de enlace
(por ejemplo, bd-desarrollo-web.wklyv437lkc1.us-east-1.rds.amazonaws.com
). Este dato será importante para conectar los clientes al servidor de base de datos.
Configurar el firewall virtual de la insancia de base de datos: Requerimos abrir el puerto 3306 para poder conectar nuestros clientes a la instancia de base de datos desde cualquier punto de Internet. Ir a la consola de AWS y seleccionar EC2 y realizar las siguientes acciones:
Red y seguridad
, seleccionar Grupos de seguridad
.
gpo-seguridad-bd-desarrollo-web
) y darle clic a la liga correspondiente en la columna de ID de grupo de seguridad
.
Editar reglas de entrada
.
MYSQL/Aurora
Anywhere-IPv4
Servidor MySQL
)Guardar reglas
.
El monitor de MySQL es una herramienta que se ejecuta desde la terminal y permite interactuar directamente con las bases de datos a través de instrucciones de SQL.
Descargar el script SQL de prueba. Desde la terminal de Cloud9 dentro del directorio donde se desee decargar el script SQL, teclear:
wget https://arielortiz.info/s202511/tc2005b/quotations.sql
Correr el monitor de MySQL. Teclear en la terminal lo siguiente:
mysql -u admin -p -h host
En donde host
se debe remplazar por el punto de enlace de la instancia de base de datos RDS (algo así como bd-desarrollo-web.us-east-1.rds.amazonaws.com
).
La aplicación solicitará inicialmente la contraseña maestra.
A partir de este momento es posible ejecutar cualquier comando de SQL en el prompt de MySQL. Por ejemplo, para ver todas las bases de datos existentes, teclear:
SHOW DATABASES;
Para correr el script descargado anteriormente, teclear:
SOURCE quotations.sql
Para realizar una consulta, solo se requiere teclearla directamente, por ejemplo:
SELECT DISTINCT author FROM quotations ORDER BY author;
Presionar Ctrl-D para salir del monitor de MySQL.
Guardar la contraseña maestra en una variable de entorno del sistema operativo es crucial porque evita que las credenciales queden expuestas directamente en el código fuente, evitando que sean comprometidas en caso de publicarse en un repositorio de control de versiones como GitHub.
Instalar el comando c9
para poder abrir en el editor cualquier archivo directamente desde la terminal. En la terminal, teclear:
sudo npm install --global c9
Abrir en el editor el archivo .bashrc
contenido en el directorio raíz del usuario del entorno de Cloud9 para definir como variables de entorno el nombre de usuario y constraseña de MySQL. Teclear en la terminal:
c9 ~/.bashrc
Ir al final del archivo .bashrc
y agregar las siguientes dos líneas:
export MYSQL_HOST="some_host" export MYSQL_USER="admin" export MYSQL_PASSWORD="some_password"
NOTA: Sustituir some_host
por el punto de enlace y some_password
por la contraseña maestra de la instancia de base de datos RDS.
Guardar el archivo.
Cerrar la terminal y abrir una nueva para que tomen efecto los valores de las nuevas variables de entorno. Para verificar que así sea, teclar en la terminal:
echo $MYSQL_HOST
echo $MYSQL_USER
echo $MYSQL_PASSWORD
Dichos comandos deben desplegar los valores asociados a las respectivas variables de entorno.
En un programa de JavaScript corriendo en Node se pueden acceder a los valores de estas variables de entorno de la siguiente manera:
process.env.MYSQL_HOST
process.env.MYSQL_USER
process.env.MYSQL_PASSWORD
A continuación se muestra cómo acceder a la instancia de base de datos MySQL recién creada desde un programa de JavaScript ejecutado en Node.
Crear un directorio para la aplicación de prueba. En la terminal teclear:
mkdir mysql_example
Para cambiarse al nuevo directorio, teclear:
cd mysql_example
Instalar el paquete de mysql2 que permite interactuar desde Node con un manejador de base de datos de MySQL usando promesas. En la terminal teclear:
npm install mysql2
En el editor crear un archivo llamado mysql_select.mjs
contenido en el directorio mysql_example
y copiar ahí el siguiente código:
// File: mysql_select.mjs // Import module to handle MySQL database operations with promises import mysql from 'mysql2/promise'; // An async function to perform a SELECT operation on the // database async function main() { let connection; try { // Create a connection to the database connection = await mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USER, password: process.env.MYSQL_PASSWORD, database: 'web_database' }); console.log('Conected to the database'); // The SQL query to execute const sqlQuery = 'SELECT DISTINCT author ' + 'FROM quotations ORDER BY author'; // Execute the query const [rows] = await connection.execute(sqlQuery); console.log('Query execution succeded'); // Loop through the result and log each author for (const row of rows) { console.log(row.author); } } catch (err) { // If an error occurs, re-throw the error throw err; } finally { // Close the database connection if (connection) { await connection.end(); } } } main();
Correr el programa anterior. Teclear en la terminal:
node mysql_select.mjs
La salida esperada es la siguiente:
Conected to the database Query execution succeded Alan Kay Alan Turing Anonymous Aristotle Brian Kernigan Charles Babbage Chinese Proverb Donald Knuth Douglas Adams Edsger Dijkstra Fred Brooks George Boole Grace Hopper Harold Abelson Homer Simpson Howard Aiken Isaac Asimov Jan van de Snepscheut Kent Beck Linus Torvalds Radia Pearlman Thomas Watson
La detención de una instancia de base de datos RDS se realiza para pausar temporalmente la base de datos y sus recursos asociados, con el fin de reducir costos durante períodos de inactividad, realizar mantenimiento o pruebas, o conservar la instancia para su uso futuro sin incurrir en cargos continuos por su funcionamiento.
Ir a la consola de Aurora and RDS. En el menú de la parte izquierda, seleccionar Bases de datos
y hacer clic en el nombre de la instancia que se desea detener.
Acciones
y seleccionar la opción Detener temporalmente
.
En la nueva ventana de diálogo, seleccionar la casilla de verificación de Reconocimiento
y hacer clic en el botón Detener temporalmente
.
NOTA 1: Se puede detener una instancia hasta por 7 días. Después de este periodo, se reiniciará automáticamente. Aunque la instancia esté detenida, se seguirán descontando créditos por el almacenamiento asociado.
NOTA 2: Para reanudar la operación de la instancia de base de datos detenida, en la consola de Aurora and RDS seleccionar la instancia detenida y hacer clic en Acciones
y eligir Comenzar
.
La eliminación de una instancia de RDS se realiza con el fin de borrar la base de datos y sus recursos asociados cuando ya no son necesarios, ya sea para reducir costos, reemplazar la instancia con una configuración diferente o eliminar completamente el servicio.
Ir a la consola de Aurora and RDS. En el menú de la parte izquierda, seleccionar Bases de datos
y hacer clic en el nombre de la instancia que se desea detener.
Acciones
y seleccionar la opción Eliminar
.
En la nueva ventana de diálogo, dejar seleccionada la casillas de verificación de Crear una instantánea final
y deseleccionar la opción Conservar copias de seguridad automatizadas
. En el campo Nombre de la instantánea final
se puede dejar el nombre sugerido. En el último campo de confirmación se debe escribir eliminarme
. Finalmente, hacer clic en el botón Eliminar
.
Es posible restaurar la instancia de la base de datos a partir de la instantánea (snapshot) creada en la sección anterior (Eliminando una instancia de RDS). Para ello, seguir los siguientes pasos:
Ir a la consola de Aurora and RDS. En el menú de la parte izquierda, seleccionar Instantáneas de
y hacer clic en el nombre de la instantánea que se desea restaurar.
En la parte superior derecha, hacer clic en el botón Acciones
, seleccionar la opción Restaurar instantánea
y completar el formulario con la siguiente información (las opciones no mencionadas aquí se deben dejar con su valor por omisión):
Opciones de implementación: Implementación de una instancia de base de datos de zona de disponibilidad única (1 instancia)
Identificador de instancias de bases de datos: Nombre de la instancia de base de datos. Conviene utilizar el nombre que originalmente se utilizó.
Ejemplo: bd-desarrollo-web
Clase de instancia de base de datos: Clases ampliables (incluye clases t)
De la lista, seleccionar: db.t4g.micro
Acceso público: Sí
Grupos de seguridad de VPC existentes:
seleccionar el grupo de seguridad previamente creado para la instancia de base datos (por ejemplo,
gpo-seguridad-bd-desarrollo-web
)
Finalmente, presionar el botón Restaurar instancia de base de datos
.