REPLICACIÓN CON MARIADB NOVENA PARTE: Crear Base de datos y realizar diversas consultas

Vamos a crear una base de datos de prueba para verificar que la replicación este funcionando bien.

Ingresamos a Mariadb/MySQL desde la consola con el siguiente comando, recuerde que inmediatamente le pedirá la contraseña asignada.

mysql -u root -p
Enter password:

Se dará cuenta que ingreso a la terminal de Mariadb/MySQL cuando cambie visualice la siguiente salida en terminal.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 39492
Server version: 10.3.12-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
Continuar leyendo «REPLICACIÓN CON MARIADB NOVENA PARTE: Crear Base de datos y realizar diversas consultas»

REPLICACIÓN CON MARIADB octava PARTE: Puesta en marcha de nuestro base de datos distribuida

Antes de iniciar el clúster

Cuando termina de instalar y configurar Galera Cluster, tiene las bases de datos listas para usar, pero aún no están conectadas entre sí para formar un clúster. Para hacer esto, necesitará comenzar mysqld en un nodo, usando la opción galera_new_cluster. Esto inicializa el nuevo componente primario para el cluster. Cada nodo que inicie después de esto se conectará al componente y comenzará la replicación.

Antes de intentar inicializar el clúster, compruebe que tiene preparado lo siguiente:

  • Los hosts de la base de datos con Galera Cluster instalado, necesitará un mínimo de tres hosts.
  • El cortafuegos configurado con los puertos correspondientes.
  • SELinux configurados para permitir el acceso a mysqld.
  • Ruta correcta a la libreria libgalera_smm.soa configurada en la opción wsrep_provider. del archivo de configuración /etc/my.cnf.d/server.cnf. Por ejemplo: wsrep_provider = /usr/lib64/libgalera_smm.so

Con los hosts preparados, está listo para inicializar el clúster.

Continuar leyendo «REPLICACIÓN CON MARIADB octava PARTE: Puesta en marcha de nuestro base de datos distribuida»

API REST SEGUNDA PARTE: Que es un api rest?

Antes de seguir con la parte practica vamos con un poco de teoría

¿que es una api?

API es el acrónimo en ingles de Application Programming Interface al español se traduce interfaz de programación de aplicaciones y en términos sencillos podemos decir que las APIs son programas que permiten que otros programas se comunique con ellas, esta comunicación se lleva a cabo a través de respuestas (Response) y peticiones (Request), el programa que se conecta a una API se le conoce como cliente o clientes ya que una API puede tener mas de un cliente.

¿QUE SIGNIFICA REST?

REST es el acrónimo de REpresentational State Transfer al español se traduce Transferencia de estado representacional suena un poco complicado se trata de es una arquitectura de desarrollo web, y como toda arquitectura cuenta con una pautas o restricciones en su uso.

Restricciones Arquitectónicas REST

En total son 6 restricciones las cuales explicare a continuación.

Continuar leyendo «API REST SEGUNDA PARTE: Que es un api rest?»

API REST PRIMERA PARTE: OBjetivo, prerequisitos, CREACION del proyecto CON laravel y control de versiones

OBJETIVO

El objetivo de este articulo es aprender a construir un API REST para un mini blog, el cual nos permita crear, consultar, actualizar y eliminar Usuarios y sus Artículos asociados, con lo cual un usuario pueda publicar muchos artículos y un articulo pertenezca a un solo usuario.

PREREQUISITOS

Antes de seguir con este articulo debes instalar:

  • APACHE
  • MySQL/MariaDB
  • Git
  • Un IDE o editor de texto
  • El gestor de dependencias en proyectos PHP Composer

CREACION del proyecto CON laravel

Para esta practica vamos a usar el framework Laravel en su versión 8 y empezando creando nuestro proyecto con el siguiente comando:

composer create-project laravel/laravel blog
Continuar leyendo «API REST PRIMERA PARTE: OBjetivo, prerequisitos, CREACION del proyecto CON laravel y control de versiones»

REPLICACIÓN CON MARIADB SÉptimA PARTE: INSTALACIÓN Y CONFIGURACIÓN DE GALERA CLUSTER

Antes de seguir con la instalación y configuración de galera y rsync esté ultimo lo usaremos como método para las transferencias de instantáneas debe verificar que este funcionando Mariadb y luego detenerlo.

Verificar el estado de MariaDB:

systemctl status mariadb

Si tienes algún problema con MariaDB debes solucionarlo antes de seguir con este tutorial.

Detener MariaDB:

systemctl stop mariadb

INSTALAR GALERA CLUSTER Y RSYNC

yum install galera rsync

configurar galera cluster

Editamos el archivo /etc/my.cnf.d/server.cnf y agregamos las siguientes líneas:

vi /etc/my.cnf.d/server.cnf
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
# Agrega los nodos involucrados en la replica
wsrep_cluster_address="gcomm://[IP],[IP],[IP]"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
# Nombre del Cluster
wsrep_cluster_name="mi_cluster"
# Permite al server aceptar conexiones de todas las interfaces 
bind-address=0.0.0.0
# Ip del nodo 
wsrep_node_address="[IP Maquina]"
# El nombre del nodo
wsrep_node_name="[Nombre Nodo]"
wsrep_sst_method=rsync 
Continuar leyendo «REPLICACIÓN CON MARIADB SÉptimA PARTE: INSTALACIÓN Y CONFIGURACIÓN DE GALERA CLUSTER»

Replicación con MariaDB sexta parte: Instalación de cliente VPN

La idea de utilizar una VPN facilita la configuración de la replicación en redes distribuidas geograficamente, ya que no tenemos que realizar un enrutamiento entre clúster, ademas de las ventajas inherentes de utilizar un VPN. Aclarando por que vamos a utilizar una VPN y suponiendo de que tiene idea de que es una VPN comencemos.

Nota: les debo una entrada completa sobre que es una VPN pero por ahora solo tengamos en mente que la VPN nos permitirá trabajar como si estuviéramos en las misma red.

Instalación de cliente de VPN

La instalación del cliente VPN para efectos prácticos se va realizar a través de un script ubicado en la página oficial install.zerotier.com. la cual nos facilita la instalación encargándose de identificar la distribución de Linux agregando el repositorio oficial de paquetes de ZeroTier e instalando el paquete zerotier-one, que habilita e inicia el servicio automáticamente.

# curl -s https://install.zerotier.com/ | sudo bash
...
Instalado:
  zerotier-one.x86_64 0:1.2.12-1.el7.centos

¡Listo!

*** Enabling and starting zerotier-one service...
Created symlink from /etc/systemd/system/multi-user.target.wants/zerotier-one.se             rvice to /usr/lib/systemd/system/zerotier-one.service.

*** Waiting for identity generation...

*** Success! You are ZeroTier address [ avyu64adb6c ].

Si todo salio bien veras un mensaje parecido a este al finalizar el script.

Continuar leyendo «Replicación con MariaDB sexta parte: Instalación de cliente VPN»

Replicación con MariaDB quinta parte: configuración SELinux

Linux con seguridad mejorada, o SELinux, es un módulo del kernel para mejorar la seguridad de los sistemas operativos Linux. Integra la compatibilidad con las políticas de seguridad de control de acceso, incluido el control de acceso obligatorio (MAC), que limita las aplicaciones de los usuarios y los daemons del sistema a los archivos y recursos de la red. 

En el contexto de Galera Cluster, los sistemas con SELinux pueden bloquear el servidor de la base de datos, impidiendo que se inicie o impidiendo que el nodo establezca conexiones con otros nodos en el clúster. Para evitar esto, debe configurar las políticas de SELinux para permitir que el nodo funcione.

Continuar leyendo «Replicación con MariaDB quinta parte: configuración SELinux»

Laravel: Migraciones

Desde laravel podemos crear tablas y relaciones para la base de datos, ademas nos ofrece un control de versiones permitiendo crear tablas, modificar, establecer relaciones, eliminarlas y todo través de comandos que facilitan este proceso.

beneficios

  • Control de versiones: puede ir entre estados de la base de datos, por ejemplo ubicándote en uno donde no esta creada cierta tabla o campo, facilita la depuración de errores ademas de contar con un registro de los cambios hechos para poder compartir con su equipo de trabajo .
  • Abstracción del motor de base de datos: las migraciones crearían la misma base de datos independiente de sistema de gestión de base de datos que utilice (MySQL, PostgreSQL, SQLite, SQL Server).
  • Facilita el despliegue del proyecto: simplificando la creación de la base de datos en nuevo servidor.
Continuar leyendo «Laravel: Migraciones»