En un artículo anterior hemos aprendido cómo crear una cuenta en Amazon Web Services (AWS), además de conocer lo que es Amazon RDS y finalmente aprendimos cómo configurar una Instancia de la base de datos Oracle en Amazon RDS. Aquí te dejo los enlaces para cada una de las partes: Parte I y Parte II.

En este artículo aprenderemos a crear una instancia de la base de datos MySQL para desarrollo y pruebas usando el servicio de Amazon RDS.

MySQL es una base de datos relacional desarrollada bajo licencia dual GPL/Licencia comercial por Oracle Corporation y está considerada como la base datos open source más popular del mundo y una de las más populares en general junto a Oracle y Microsoft SQL Server, principalmente usado para entornos de desarrollo web.

Recordemos que también hemos creado un usuario IAM en nuestro AWS para no tener que trabajar con la cuenta raíz.

Para ingresar a la consola de administrador de AWS, accedemos a la URL personalizada que se nos dio cuando creamos el usuario IAM:

  • Cuenta: nuestro alias
  • Nombre de Usuario: el usuario que creamos como administrador en el IAM
  • Contraseña: ingresamos la contraseña del usuario IAM

 

Accedemos a la página de inicio de AWS, y luego expandimos “All services”:

Seleccionamos en la sección Database, la opción RDS:

Podemos ver que accedemos al servicio RDS y nos muestra la página de inicio de “Amazon Relational Database Service”:

Para crear una Instancia de la base de datos MySQL hacemos clic en el botón: “Get Started Now”.

Aparece la página para seleccionar el motor de base de datos que queremos utilizar. Seleccionamos MySQL.

Hacemos clic en el botón Select.

Se muestra la página para seleccionar el tipo de uso que vamos a dar a la base de datos, en esta demostración seleccionaremos Dev/Test.

Hacemos clic en el botón Next Step.

Tildamos la opción “Only show options that are eligible for RDS Free Tier” para que nos muestre las opciones que son gratuitas en el primer año de uso de los servicios AWS. En el caso que quisiéramos ver todas las opciones que se presentan no tildamos esta opción.

Amazon RDS Free Tier nos proporciona una instancia de db.t2.micro, así como hasta 20 GB de almacenamiento, lo que permite a los nuevos clientes de AWS adquirir experiencia práctica con Amazon RDS.

Seleccionamos la clase de la Instancia de la Base de Datos:

Details: db.t2.micro

Type: Micro Instance - Current Generation

vCPU: 1 vCPU

Memory: 1 GiB

EBS Optimized: No

Network Performance: Low

Free Tier Eligible: Yes

 

Tipo de Instancia

Clases de instancias de BD de generación actual

Standard (Última generación)

db.m4.large | db.m4.xlarge | db.m4.2xlarge | db.m4.4xlarge | db.m4.10xlarge

Standard (Generación anterior)

db.m3.medium | db.m3.large | db.m3.xlarge | db.m3.2xlarge

Memoria optimizada

db.r3.large | db.r3.xlarge | db.r3.2xlarge | db.r3.4xlarge | db.r3.8xlarge

Capacidad de rendimiento

db.t2.micro | db.t2.small | db.t2.medium | db.t2.large

 

Nota: Para MySQL .m4 = 5.5,5.6,5.7

En Tipo de Almacenamiento seleccionamos: “General Purpose (SSD)”

Amazon RDS proporciona tres tipos de almacenamiento: magnético, de uso general (SSD) y provisioned IOPS  SSD (operaciones de entrada/salida por segundo). Se diferencian en características de rendimiento y precio, lo que nos permite adaptar el rendimiento de almacenamiento y el costo a las necesidades de la carga de trabajo de nuestra base de datos. En este caso como estamos solo mostrando las características que son gratuitas, se habilitan las opciones de uso general (SSD) y magnético.

Una vez seleccionadas las especificaciones de la Instancia, debemos ingresar las siguientes configuraciones en la parte inferior de la página:

  • DB Instance Identifier: Debemos especificar un nombre único para la instancia de la base de datos perteneciente a nuestra cuenta de AWS en la región que hayamos seleccionado. Podemos optar por agregar un nombre distintivo que indique el motor de la base de datos, por ejemplo: “mysql-instance1”. Recordemos que en nuestro AWS podemos tener diferentes motores de bases de datos ejecutándose simultáneamente.
  • Master Username: Debemos especificar una cadena alfanumérica que lo utilizaremos como nombre de usuario maestro para iniciar sesión en la instancia de la base de datos. Los privilegios predeterminados concedidos a la cuenta de nombre de usuario maestro incluyen: crear, eliminar, referencias, eventos, alterar, eliminar, indexar, insertar, seleccionar, actualizar, crear tablas temporales, bloquear tablas, trigger, crear vista, crear rutina, ejecutar, crear usuario, proceso, mostrar bases de datos, opción grant. El nombre de usuario principal debe comenzar con una letra, como por ejemplo: "adminXX".
  • Master Password: Debemos especificar una cadena que defina la contraseña para el usuario maestro.  La contraseña maestra debe tener al menos ocho caracteres hasta 16 caracteres excluyendo /, “, y @, como por ejemplo: "mypassword".
  • Confirm Password: Repetimos la contraseña ingresada arriba.

 

Hacemos clic en el botón Next Step.

Podemos visualizar la página de configuraciones avanzadas.

En la sección “Network & Security”:

  • VPC: seleccionamos Default VPC (Virtual Private Cloud) el cual define el entorno de red virtual para esta instancia de base de datos. Sólo se enumeran los VPC con un grupo de subred de la base correspondiente.
  • Publicly Accessible: Seleccionamos Sí, si deseamos instancias de EC2 y dispositivos fuera del VPC que aloja la instancia de DB para conectarse a la instancia de DB. Si seleccionamos que No, Amazon RDS no asignará una dirección IP pública a la instancia de DB y ninguna instancia de EC2 o dispositivos fuera del VPC podrá conectarse. Si seleccionamos que Sí, también debemos seleccionar uno o más grupos de seguridad VPC que especifiquen qué instancias y dispositivos EC2 pueden conectarse a la instancia de la base de datos.
  • Availability Zone: seleccionamos la zona disponible.
  • VPC Security Group(s): Seleccionamos el grupo o grupos de seguridad que tienen reglas que autorizan las conexiones de todas las instancias y dispositivos de EC2 que necesitan acceder a los datos almacenados en la instancia de DB. De forma predeterminada, los grupos de seguridad no autorizan ninguna conexión; debemos especificar reglas para todas las instancias y dispositivos que se conectarán a la instancia de la base de datos.

En la sección “Database Options”:

  • Database Name: especificamos una cadena de hasta 64 caracteres alfanuméricos que definen el nombre dado a una base de datos que Amazon RDS crea cuando crea la instancia de DB, como por ejemplo "mydb". Si no especificamos un nombre de base de datos, Amazon RDS no crea una base de datos cuando crea la instancia de la base de datos.
  • Database Port: El puerto que comúnmente se utiliza para MySQL es el 3306.
  • DB Parameter Group: es el que define los valores de configuración que se desea aplicar a esta instancia de la base de datos.
  • Option Group: Algunos motores de base de datos ofrecen funciones adicionales que facilitan la administración de datos y bases de datos y proporcionan seguridad adicional a su base de datos. Amazon RDS utiliza grupos de opciones para habilitar y configurar estas características. Un grupo de opciones puede especificar características, llamadas opciones, que están disponibles para una instancia de Amazon RDS DB particular. Las opciones pueden tener configuraciones que especifiquen cómo funciona la opción. Cuando se asocia una instancia de base de datos con un grupo de opciones, las opciones especificadas y las opciones están habilitadas para esa instancia de base de datos.

 

En la Sección “Backup”:

  • Backup Retention Period: 7 días
  • Backup Windows: No Preference. (En el caso que quisiéramos configurar una ventana de tiempo seleccionamos Windows.)

El resto de las opciones las dejamos por defecto y hacemos clic en el botón “Launch DB Instance”.

De esta forma podemos ver que la Instancia ha sido creada con éxito.

Para acceder a la instancia recién creada hacemos clic en el botón View Your DB Instances y luego hacemos clic en la flechita para expandir la información de la Instancia.

Podemos ver que nos indica que si bien la instancia está disponible, no hay permiso de acceso. Para solucionar este problema hacemos clic en el triángulo y luego en el botón Edit Security Group del tooltip.

Accedemos al EC2 Dashboard donde podemos visualizar el Security Group llamado default, que es el que usamos para esta demostración. En la parte inferior de la pantalla podemos ver 4 fichas (tabs) seleccionamos la segunda ficha “Inbound” y hacemos clic en el botón Edit.

 Agregamos una nueva regla, para ello hacemos clic en el botón Add Rule:

  • Type: MYSQL/Aurora
  • Protocol: TCP
  • Port Range: 3306
  • Source: My IP

 

Hacemos clic en el botón Save.

Regresamos a la página de la instancia y refrescamos. Ahora podemos visualizar que está autorizado el acceso.

Conectarnos a la base de datos MySQL de Amazon RDS desde nuestra PC con el SQL Developer

Es necesario que nuestro SQL Developer tenga el driver JDBC para MYSQL, si no lo tenemos lo podemos descargar desde aquí.

Descomprimimos el fichero y guardamos la ruta del archivo “.jar”.

Abrimos el SQL Developer y vamos al menú “Tools/Preferences…” en la ventana modal que se abre hacemos clic en la sección “Database” para expandir la sección y seleccionamos la opción “Third Party JDBC Drivers”. Añadimos una nueva entrada y agregamos la ruta donde se encuentra el archivo .jar que habíamos descargado y descomprimido. De ese modo se agrega en el SQL Developer la opción de conectarse con bases de datos MySQL.

Ahora estamos en condiciones de crear una nueva conexión.

 

Seleccionamos:

  • Connection Name: le damos un nombre a la conexión
  • Username: el usuario de la base de datos MySQL con el que vamos a conectar
  • Password: la contraseña del usuario
  • Hostname: colocamos el link Endpoint que nos provee Amazon RDS en la página de la instancia
  • Port: Por defecto 3306

 

Y nos conectamos a la base de datos MySQL que hemos creado en Amazon RDS.

Finalmente podemos crear una tabla demo en la base de datos como ejemplo:

De esta forma muy sencilla hemos creado una instancia de la base de datos MySQL en Amazon RDS usando una cuenta de Amazon Web Services, en la cual podemos conectarnos con ella desde nuestra PC local usando el SQL Developer.