Database remoto con Digital Ocean

Digital Ocean desde hace rato esta ofreciendo el servicio de database es decir la posibilidad de conectar nuestras aplicaciones a un motor de base de datos hospedados en los centros de datos de DO. Hoy decidí probarlo para hospedar la base de datos de ASTPP que estoy utilizando para el curso.

Una vez logueados a la cuenta de Digital Ocean, escogemos el servicio:

y luego el motor de base de datos:

DO soporta PostgreSQL 12,11y 10, MySQL v. 8 y Redis 6. El servicio más económico es de 15 dólares/mes pero no permite tener nodos de respaldo. Para poder tener nodos de respaldo, el servicio más económico es de 30 dólares/mes y cada nodo de respaldo, se pueden seleccionar hasta dos, tiene un costo de 20 dólares/mes:

luego se escoge el centro de datos:

un nombre para el cluster:

y por ultimo:

luego aparecerá una ventana para afinar la configuración del cluster; seguimos con GET STARTED:

en Add trusted sources se añaden las IPs o rango de IPs que estarán autorizadas a acceder a las base de datos creadas;

luego aparecerá una ventana con todos los datos necesarios para conectarse al servidor; Al terminar esta parte, tendremos disponible nuestro motor de base de datos con un nodo de respaldo disponible. Para acceder utilizaremos los datos facilitados, es decir:

mysql -u doadmin -pfus9ybmiahlqvoxi -h astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com -P 25060

Dejo la contraseña en claro porque al terminar esta guía borraré el servicio; una vez que tengamos acceso el motor de base de datos, creamos la base de datos y damos acceso a ella a un nuevo usuario:

mysql> create database astpp;

mysql> CREATE USER 'astppuser'@'%' IDENTIFIED BY 'efkA*eLL9lqWiCGSZV';

Query OK, 0 rows affected (0.02 sec)

mysql> ALTER USER 'astppuser'@'%' IDENTIFIED WITH mysql_native_password BY 'efkA*eLL9lqWiCGSZV';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON astpp.* TO 'astppuser'@'%' WITH GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> quit

Bye

El paso a seguir es crear una copia de la base de datos original:

mysqldump -u root -p astpp > astpp.sql

Enter password:

luego cargar la base de datos a DO:

mysql -u doadmin -pfus9ybmiahlqvoxi -h astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com -P 25060 astpp < astpp.sql

Primer error:

ERROR 3750 (HY000) at line 266: Unable to create or change a table without a primary key

Se soluciona abriendo el archivo que contiene la copia de la base de datos:

nano astpp.sql

y después de esta linea:

-- Server version 8.0.23

añadiendo:

SET sql_require_primary_key=0;

Se guardan los cambios y se intenta cargar nuevamente los datos:

mysql -u doadmin -pfus9ybmiahlqvoxi -h astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com -P 25060 astpp < astpp.sql

esta vez el error será:

ERROR 1227 (42000) at line 626: Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation

que hace referencia a esta linea de la copia de la base de datos:

/*!50003 CREATE*/ /*!50017 DEFINER=`root`@`localhost`*/ /*!50003 TRIGGER `cdr_records` AFTER INSERT ON `cdrs` FOR EACH ROW BEGIN

Se soluciona con:

sed 's/\sDEFINER=`[^`]*`@`[^`]*`//g' -i astpp.sql

Se intenta nuevamente cargar los datos:

mysql -u doadmin -pfus9ybmiahlqvoxi -h astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com -P 25060 astpp < astpp.sql

mysql: [Warning] Using a password on the command line interface can be insecure.

Esta vez debería haber funcionado todo sin problemas; para revisar:

mysql -u doadmin -pfus9ybmiahlqvoxi -h astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com -P 25060

mysql> use astpp

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;

aparecerán todas las tablas de la base de datos de ASTPP que se ha copiado. Ultimo paso conectar ASTPP a esa base de datos, operación que se realiza con ODBC:

nano /etc/odbc.ini

copiamos las siguientes lineas:

[ASTPP]

Driver = /usr/lib64/libmyodbc8w.so

SERVER = astpp-cluster-do-user-8891763-0.b.db.ondigitalocean.com

PORT = 25060

DATABASE = astpp

USERNAME = astppuser

PASSWORD = efkA*eLL9lqWiCGSZV

OPTION = 67108864

charset = utf8

guardamos los cambios y probamos la conexión:

isql ASTPP astppuser efkA*eLL9lqWiCGSZV

¡Listo!

En Log & Queries veremos todos los registros de acceso y de las conexiones activas. Personalmente me parece que el servicio es un poco caro pero la verdad no se que precios que tienen los demás proveedores. Me parece muy interesante el servicio de redis que se podría utilizar, por ejemplos, en una configuración de alta disponibilidad donde se utiliza Redis para guardar los datos del flujo media de las llamadas cuando se utiliza RTPEngine.

Subscribe to Comments for "Database remoto con Digital Ocean" Subscribe to VozToVoice - All comments