jueves, 11 de octubre de 2018

CMDB de Código Abierto

Introducción 

Debido a la necesidad de la Dirección o Gerencia de Informática de cualquier institución o empresa de contar con un control de los servicios y en general de los elementos de configuración que forman la infraestructura del área, además de cumplir con lo establecido en el Manual Administrativo de Aplicación General en las materias de Tecnologías de la Información y Comunicaciones y Seguridad de la Información (MAAGTICSI) para el caso de las instituciones gubernamentales en México, nos hemos dado a la tarea de evaluar tres herramientas del tipo Configuration Manager Data Base (CMDB) de Código Abierto y apegados a la licencia GPL (General Public License) bajo el proyecto GNU, lo anterior con el objeto de no generar gastos recurrentes a la institución o empresa pero si de mejorar el servicio de Informática y su administración. Para no depender de las licencias de windows, se evalúan aplicaciones que se ejecuten sobre un sistema operativo Linux.

Los Tres Principales CMDB’s de Código Abierto 

CMDBuild 

Esta herramienta, sin duda una de las mejores, ofrece una aplicación demo “Ready2Use”, que si bien la hace lucir bien incluyendo información de prueba, cada 24 horas se restaura a su condición inicial, de modo que no es posible realizar pruebas que no sean realmente ligeras, lo que impide llevar a cabo ejercicios que realmente permitan apreciar su verdadero potencial. 

Se trata de una herramienta de código abierto y la aplicación está disponible para ser instalada, lo cual se llevó a cabo siguiendo la documentación incluida, sin embargo no es una actividad para nada trivial, tanto así que la empresa CMDBuild ofrece un paquete de soporte técnico de 80 horas para realizar la instalación correspondiente (ver artículo Instalación de CMDBuild más adelante en este mismo blog) o la opción de adquirir un paquete con la instalación y configuración incluida por un costo determinado. 

A continuación se muestran algunos de los costos asociados (convertidos a moneda nacional considerando el tipo de cambio de $21.71 MXN por Euro)  a la utilización de esta herramienta: 

Soporte Técnico Anual

Instancia

Silver

Gold

Platinum

Base
$ 107,898.70
$ 145,022.80
$ 214,711.90
Large
$ 160,219.80
$ 214,711.90
$ 319,571.20

La tabla anterior hace referencia a tres niveles de soporte, a saber: Silver, Gold y Platinum en función de la complejidad requerida, como se muestra a continuación: 

Acuerdos de Nivel de Servicio (SLA)

Servicio

Silver

Gold

Platinum

Mesa de ayuda vía correo electrónico
Soporte telefónico
No
Conexión remota
Máximo tiempo de respuesta (análisis de tickets)
3 dh
2 dh
4 hh
Máximo tiempo de resolución por cada ticket tipo "A"
5 dh
3 dh
4 hh
Alerta de nuevas versiones
10 dh
6 dh
2 dh
Nota: dh = días hábiles, hh = horas hábiles.
Los “tickets” tipo “A” se refieren a configuración de la aplicación realizada por Tecnoteca. Los “tickets” tipo “B” se refieren a funcionalidades esenciales del CMDB. Los “tickets” tipo “C” se refieren a componentes de terceros y su resolución puede implicar un costo adicional.

Tecnoteca (empresa de soporte oficial del proyecto CMDBuild) también ofrece servicio de soporte por paquetes de horas: 

Paquetes de Soporte x Uso 

Horas Precio
20
$ 44,071.30
40
$ 77,070.50
80
$ 131,345.50
160
$ 240,546.80

Si se considera necesario, Tecnoteca cuenta con cursos de capacitación para un máximo aprovechamiento de la herramienta.

Capacitación Remota

Módulos Sesiones Precio Persona
adicional
READY2USE
5
$ 43,202.90
$ 9,335.30
CMDBuild
Módulo A
2
$ 17,259.45
$ 3,690.70
CMDBuild
Módulo B
4
$ 34,518.90
$ 7,381.40
CMDBuild
Módulo C
2
$ 17,259.45
$ 3,690.70
CMDBuild
Módulo D
7
$ 60,353.80
$ 13,026.00
CMDBuild
Módulo E
5
$ 43,202.90
$ 9,335.30

iTop

Esta herramienta se observa con una interfaz muy amigable e intuitiva, el soporte es proporcionado a través de una página que contiene tanto capacitación como documentación del producto y un foro compartido por usuarios y creadores de la aplicación. 
La instalación aunque no tan complicada como la de CMDBuild también tienen sus detalles, pero nada que no pueda ser resuelto con un poco de paciencia. Ver Instalación de iTop más adelante en este mismo blog. 
No se encontraron costos adicionales para la versión libre y las extensiones que se muestran en la siguiente tabla tampoco tienen costo adicional.

Extensiones Disponibles para iTop:

Nombre Descripción
Approval process automation Controla el proceso de aprobación con reglas predefinidas basadas en un catálogo de servicios
Approval process light Aprueba una requisición vía un simple correo
Customized request forms Define formas de requerimientos personalizados basadas en el catálogo de servicios
Mail to ticket automation Crea y actualiza tickets automáticamente de correos entrantes
Data collector for vSphere El Recolector para la sincronización de información de vSphere en iTop CMDB
Configurator for automatic object creation Formularios basados en objetos existentes
Dispatch Incident to team Despachar un incidente al equipo sin asignarle un agente
Data synchronization dashboard Contar con una vista global de toda la sincronización de la información de un vistazo
Dispatch User request to team Despachar un requerimiento al equipo sin asignarle un agente
Customer Survey Crear un cuestionario, enviarlo a los clientes y recolectar las respuestas
Data archiver simple Archivar tickets desde la consola
SLA considering business hours Calcular los SLA’s teniendo en cuenta la ventana de cobertura de servicio y días festivos.
Send updates by email Enviar un correo a contactos pre-configurados cuando se actualice un ticket
User actions configurator Configurar acciones de usuario para simplificar y automatizar procesos
Predefined response models Pre-llenar el campo de caso seleccionando de una lista de respuestas pre-definida
TeemIp core IP management Extensión de la completa explotación del manejo de direcciones IP (IPAM) para iTop
TeemIp IP request management Provee un esquema de tickects automatizado para procesar requerimientos de usuario de IP y subnet con un simple flujo de trabajo dedicado.
Communications to the Customers Informar a sus clientes de eventos críticos que les impactan a través del portal del usuario.
Service catalog mosaic view Luzca profesional. Despliegue su catálogo de servicios como iconos en el portal del usuario
Attributes description tooltip Informe a sus usuarios del propósito de campos con pequeñas notas del campo.
Personal data anonymizer Ponga en anonimato a personas cumpliendo con la Regulación General de Regulación de Datos (GDPR)
iFrame Dashlet Integre páginas externas en sus tableros de control
Admin Tools Delegation Delegación de herramientas administrativas

Basándose en alguna de las extensiones anteriores pudieran crearse otras completamente adecuadas a la operación del área de informática.

i-doit

Esta herramienta cuenta con una versión profesional (P) con un costo asociado y una versión que puede ser utilizada por la comunidad (C) pero bastante reducida en funcionalidad como puede apreciarse en la tabla a continuación:

Característica C P Observaciones
Documentación profesional de IT y CMDB
Clara documentación técnica y administrativa
Intuitiva interfaz de usuario
Interfaz de usuario basada en navegador
Funciones de edición básicas
Funciones básicas como buscar, soporte de formularios, marcadores.
Administración de derechos y roles
Administración parcial en la versión Abierta, administración compleja en la versión profesional.
Interfaz de usuario avanzada y adaptable
La versión profesional viene con muchos desplegados gráficos. Los tipos de objeto y categorías pueden editarse mas fácilmente que en la versión abierta.
Importación de archivos y datos
Ambas versiones soportan LDAP/XML/JDISC/OCS importación de inventarios, la versión profesional también soporta CSV.
Extensiones (gratis y de pago)
Sólo la versión profesional soporta extensiones.
Funciones de edición avanzada
Muchas funciones que hacen las tareas cotidianas más fáciles. V.g. multi-edición y cambios masivos.
Reportes y Notificaciones
Reportes avanzados y adaptables, así como notificaciones vía correo electrónico.
Soporte
Contratar el soporte profesional de i-doit

Nota: ♦ Incluída, ◊ Parcialmente incluída


Dado que prácticamente es obligado adquirir la versión profesional para contar con funcionalidades tan necesarias como Reportes y Notificaciones y así mismo el soporte. Este CMBD no parece ser una opción viable. 


Características globales por CMDB

CMDBuild

  • Código Abierto: Cumple
  • De conformidad con ITIL: Cumple
  • Documentación:
    • Overview manual
    • Adminstrator manual
    • Technical manual
    • Webservice manual
    • Workflow manual
    • User manual
    • Connectors manual
    • READY2USER overview manual
  • Demo en video
  • Requerimientos de hardware:
    • CPU de reciente generación
    • 4 GB RAM mínimo
    • 100 GB HD mínimo
  • Requerimientos de software:
    • Sistema Operativo 
      • Ubuntu Server 18.04 LTS
    • Database
      • PostgreSQL 10 3
    • Servlet Container / Web Server:
      • Apache Tomcat 8.x
    • Java Libraries:
      • Document Management System (DMS)
      • JDK 1.8 Oracle

  iTop
  • Código Abierto: Cumple
  • De conformidad con ITIL: Cumple
  • Documentación
  • Demo en video
  • Requerimientos de hardware:
    • CPU de reciente generación (dual core)
    • 2 GB RAM mínimo
    • 10 GB HD mínimo
  • Requerimientos de software:
    • Sistema Operativo 
      • Ubuntu Server 16.04 LTS
    • Opciones de base de datos:
      • MariaDB 10.1
      • MySQL 5.6, 5.7
    • Web Server:
      • Apache Webserver 2.4
    • PHP:
      • PHP 5.6, 7.0, 7.1

i-doit

  • Código Abierto: Cumple
  • De conformidad con ITIL: Cumple
  • Documentación
  • Demo en video
  • Requerimientos de hardware:
    • CPU de reciente generación (dual core)
    • 2 GB RAM mínimo
    • 10 GB HD mínimo
  • Requerimientos de software:
    • Sistema Operativo 
      • Ubuntu Server 16.04 LTS
    • Opciones de base de datos:
      • MariaDB 10.1
      • MySQL 5.6, 5.7
    • Web Server:
      • Apache Webserver 2.4
    • PHP:
      • PHP 5.6, 7.0, 7.1

Conclusión:

Tanto CMBDuild como i-doit requieren de compras adicionales para conseguir un funcionamiento aceptable para la mayoría de las áreas de informática.
Con iTop se puede obtener una funcionalidad básica pero aceptable para iniciar en la administración de los servicios de informática, porque no todo es adquirir este o aquel producto, sino que el levantamiento y registro de la información inicial así como la definición de los administradores de la herramienta, así como de los niveles de servicio son actividades fundamentales para poder iniciar con este tipo de proyectos.
En breve publicaré como se instaló la versión de prueba tanto de CMDBuild como de iTop.

lunes, 26 de octubre de 2009

Mi Mouse NO Funciona en Word 2007

Si notas que con el mouse no puedes ubicarte sobre alguna posición en particular o sombrear alguna palabra y finalmente te das cuenta que no puedes hacer nada sobre el documento de word sobre el cual estas trabajando, sino que sólo puedes seleccionar opciones del menú principal, entonces tu problema podría deberse a que tienes activo el complemento de Word: PowerDesigner 12.0. Si ese fuera el caso, para solucionar el problema de inutilización del mouse deberás desactivar el complemento como sigue:

1. Seleccciona el menú principal de Word.


Haz clic sobre el botón: "Opciones de Word".

2. Sobre la pantalla que se muestra, haz clic sobre la opción: "Complementos":


3. En la sección de complementos activos, selecciona el complemento relativo a PowerDesigner 12.0 y haz clic sobre el botón "Ir".


4. Se te mostrará una ventana como ésta, en donde deberás selecccionar y desmarcar el complemento de referencia.


5. Una vez desmarcado el coplemento, haz clic sobre el boton "Aceptar", reinicia Word y listo.


martes, 3 de febrero de 2009

Secuestro de Formatos en Sitios WEB

(Artículo original en inglés: anders.com)

Lo Que Pasa

Los generadores de SPAM son frecuentemente incluidos en las listas negras y expulsados de las redes. A causa de esto, truquear un sitio web que no envía SPAM y convertirlo en uno que si envíe SPAM se ha vuelto una prioridad para ellos. Una forma de los generadores de SPAM para encontrar servidores web vulnerables, es probar aplicaciones CGI (Common Gateway Interface)que permita esclavizar al servidor web. Una vez encontrado un servidor web vulnerable, el generador de SPAM puede disfrazar el verdadero origen de su SPAM, mientras que el servidor WEB esclavizado hace el trabajo pesado.

¿Cómo lo Hacen?


Una tarea común realizada por los sitios web es enviar un correo electrónico al propietario del sitio web con los datos que alguien haya ingresado en una forma. Por ejemplo, un "script" que haga justamente esto, se llama formmail.pl o formmail.cgi del archivo de scripts de Mat. En este "script", así como en muchos otros similares, algunos campos en la forma se utilizan directamente en el encabezado ("header") de un correo electrónico ("email").(Por ejemplo el campo "Responder a:" de un correo electrónico algunas veces toma el valor de lo que sea que el usuario de la forma haya ingresado en el campo llamado "email", de modo que el propietario del sitio web pueda hacer click rápidamente en el botón "Reply" para enviar una respuesta al correo electrónico. Si estos campos se incluyen sin modificación, un generador de SPAM puede simplemente sobre escribir el resto de las líneas de encabezado y efectivamente enviar cualquier correo electrónico que deseen a través del sistema correo electrónico subyacente,efectivamente esclavizando el servidor web y el sistema de correo para enviar SPAM.

¿Cómo exactamente explotan el "script"?

El destino de un correo electrónico esta puesto en sus encabezados. Los encabezados, como todo lo demás en un correo electrónico, sólo son líneas de texto. Lo que separar a los encabezados del cuerpo de un correo electrónico son solamente dos líneas en blanco. Si tu "script" de la forma de correo coloca cualquier cosa en el encabezado de un correo electrónico que esta inalterado con respecto a lo que los usuarios de la web introdujeron, podrían agregar fácilmente esas dos líneas en blanco. Esto, naturalmente, únicamente truncaría los encabezados antes y hace que el cuerpo del correo electrónico contenga algo de los encabezados también. Sin embargo si el usuario de la web decide agregar unos cuantos encabezados más antes de enviar las dos líneas blancas, el sistema de correo subyacente escuchará aquellos encabezados también ; así que lo que los generadores de SPAM estan haciendo es incluir una "CCO:" ("Bcc:") lista de víctimas de spam al correo electrónico. Cuando el subsistema de correo tien el correo electrónico, sigue ciegamente lo que esta escrito en los encabezados y felizmente envía una copia del mensaje a cada persona listada en la línea "CCO:" ("Bcc:"). Ahora naturalmente los geenradores de SPAM probablemente también agregarán su propia línea de "Asunto:" y algo de contenido SPAM en el correo electrónico.

Con objeto de encontrar los servidores web vulnerables , los generadores de SPAM generalmente prueban la "forma" enviando un correo de muestra copiando de forma oculta ("CCO:") a una dirección de correo electrónico a la que ellos tengan acceso y que puedan desechar en cualquier momento. Los administradores de sitios web se dan cuenta de esto cuando reciben de 5 a 10 correos en menos de 1 segundo.

¿Y que podemos hacer al respecto?

La manera más sencilla de mitigar el peligro es deshabilitar cualquier caracter "linefeed" or "carriage return" en campos utilizados en los encabezados del correo electrónico y en consecuencia deshabilitando la posibilidad de un atacante de agregar esas dos líneas en blanco y truquear tu sistema de correo para enviar lo que a ellos se les antoje. Entonces el problema se convierte en una tarea de limpieza de código mas que estar esclavizado a perseguir generadores de SPAM.

¿Eh? ¿Cómo le hago?

Bueno, aquí es donde se vuelve un poco complicado. La respuesta a esta cuestión depende de que software este ulizando el procesador de "formas" en tu servidor web. Si no escribiste tu propio procesador de "formas", tu primer paso es probablemente preguntar a la gente que te ayudó a configurar tu sitio web. Las formas procesadoras de correo más comunes han tenido arreglos de problemas ("bug fixes") liberados desde que esta vulnerabilidad apareció. ¿Tu proveedor de servicios de "hosteo" ha actualizado su código para el posteo de "formas"?

Si sabes lo que estas haciendo, checa todos los campos en las "formas" que se utilizan en los encabezados de correo electrónico y elimina los caracteres "carriage return" (\r) y "line feed" (\n). En perl, se hace así:

$field =~ s/\r//g; $field = ~ s/\n/ /g;

Si estas utilizando PHP, puedes hacer esto para cada variable utilizada en los encabezados de correo electrónico:

$_POST['email'] = preg_replace("/\r/", "", $_POST['email']);
$_POST['email'] = preg_replace("/\n/", "", $_POST['email']);

¿Cómo se si he sido atacado?

Como la mayoría de los "scripts" de formatos para enviar correo no escriben en algún lugar de un archivo lo que estan haciendo, la mejor manera de distinguir si tu configuración ha sido esclavizada para enviar SPAM es verificar tus "logs" del servidor de correo. Si estas con proveedor de servicios de "hosteo", generalmenete ellos puedes verificar esto por ti.

¿Que debería hacer si he sido atacado?

Deberías actualizar tus "scripts" de formatos para envió de correo electrónico de modo que intentos repetitivos no sean exitosos. (hazlo como se describió antes). Luego podrías rastrear la dirección de correo electrónico desechable que utilizó el generador de SPAM para probar la vulnerabilidad.

Bien, estoy limpio. ¿Ahora cómo detengo los molestos correos de prueba?

De nuevo, pregunta a tu proveedor de servicios de "hosteo". Sin embargo, si tu has hecho las ediciones por tu cuenta, busca una huella en el correo electrónico que lo señale como obviaente malo. Como si el campo de correo contiene los caracteres "Bcc:" ("CCO:"), es muy probable que estes viendo una prueba de vulnerabilidad. Nada mas coloca un enunciado "if" alrededor del bloque de código que te envía un correo que prueba la vulnerabilidad. No olvides ignorar las mayúsculas dado que "Bcc:" y "bcc:" funcionan igual. Alternativamente podrías buscar sólo las dos líneas en blanco, sin embargo debes tener cuidado con "\r\n\r\n" y con "\n\n" ya que las dos opciones se interpretan como dos líneas en blanco. Si vas a proceder de sta manera, Te sugiero que quites primero todas los caracteres "\r" y luego busques "\n\n".

¿Qué mas puede hacerse?

Una mejor (aunque mas complicada) manera de hacer esto es requerir algo que es fácil de hacer para un humano pero difícil para una computadora. Tal método que es bastante popular es utilizar una imágen Captcha con algún texto en ella que el usuario deberá introducir en la forma antes de enviarla. Puedes también encontrar otro método de reconocimiento de figuras en JustHumans.com

Quiero una explicación más técnica con un ejemplo!

Considera una forma CGI que acepta una variable de "forma" llamada "reply- to" la cual se inserta en los encabezados de un correo de comentarios enviado al administrador del sitio web ("webmaster"). El correo resultante que el CGI envía al sistema de correo local se vería asi:

From: My Comment Form
To: me@example.com
Reply-To: webuser@company.com
Subject: New Comment!

I like your website. Thanks for the resource.

El sistema de correo subyacente obtiene este correo y lo procesa como lo esperarías, enviando una copia de este mensaje a me@example.com.

Ahora, un generador de SPAM quiere atacar esta "forma", así que llena todos los campos como vimos antes pero envía lo siguiente a la variable de la "forma" CGI llamada "reply-to":

webuser@company.com
Bcc: joe@foo.com, jane@bar.com
Subject: Compra Viagra!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Consigue tu viagra aquí! http://xxx.viagra.com/xxx
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Luce peligroso, ¿no?. Con un procesador de "formas" no verificado, el correo electrónico resultante enviado al subsistema de correo se vería así:

From: My Comment Form
To: me@example.com
Reply-To: webuser@company.com
Bcc: joe@foo.com, jane@bar.com
Subject: Compra Viagra!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Consigue tu viagra aquí! http://xxx.viagra.com/xxx
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Subject: New Comment!

I like your website. Thanks for the resource.

Debido a que la variable CGI "reply-to" incluye caracteres "new-line" y una gran cantidad de direcciones para SPAM, el atacante puede engañar al que envía el correo haciéndolo pensar que la línea "Bcc:" ("CCO:") y la línea "Subject" son legítimas. De esa forma joe@bo.com y jane@bar.com obtienen un correo con el Asunto "Compra Viagra!".

Otra vez, para protegernos de esto, sólo necesitamos deshacernos de los caracteres return ("\r") y "newline" ("\n"), en todos los campos de la "forma" CGI utilizados en los encabezados del correo electrónico. Si lo hicimos, el correo electrónico para el subsistema subyacente se vería así:

From: My Comment Form
To: me@example.com
Reply-To: webuser@company.comBcc: joe@foo.com, jane@bar.comSubject: Compra Viagra!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Consigue tu viagra aquí! http://xxx.viagra.com/xxx!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Subject: New Comment!

I like your website. Thanks for the resource.

y el subsistema de correo subyacente enviaría el correo como se esperaba.


viernes, 26 de diciembre de 2008

Maestro-Esclavo con MySQL

En cierta ocasión surgió la necesidad de contar en forma centralizada y con un retraso menor a una hora con la información que se estaba generando en cualquiera de las sucursales, por lo que se implementa una solución que a continuación se detalla, considerando que en todas las sucursales se cuenta con MySQL y servidores ya sea Linux o Windows.

Con anterioridad se había definido e implementado una vpn para tener acceso a los servidores de cada sucursal de forma remota.

La idea es que cada una de las bases de datos contenidas en los respectivos servidores de cada sucursal sea replicada de forma casi inmediata al servidor LINUX ubicado en las oficinas corporativas.

Con esto en mente definiremos a cada uno de los servidores de cada instalación como maestro; es decir, la instancia de MySQL que se esté ejecutando ya sea en un servidor Windows o en un LINUX será la que mande o le indique a una instancia esclava ubicada en el anteriormente mencionado servidor LINUX que debe replicar la instrucción SQL realizada en la base de datos maestra.

Para cada sucursal, el puerto de MySQL siempre será el de omisión: 3306 y la identificación de los servidores dentro del archivo de configuración para MySQL, my.cnf será el indicado en la columna master de la tabla que aparece a continuación:




server-id






sucursal

instalación

pto. En corporativo

master

slave

S.O.

ip de la vpn

A

baseA

3307

107

307

linux

192

168

253

10

B

baseB

3308

108

308

win

192

168

253

12

C

baseC

3309

109

309

linux

192

168

253

14

D

baseD

3310

110

310

win

192

168

253

16

E

baseE

3311

111

311

win

192

168

253

18

Tabla 1.

En la instalación del corporativo, los parámetros para cada instancia del servicio MySQL están definidos en el archivo de configuración mysql.cnf ubicado en el directorio /etc, de acuerdo a lo especificado en la Tabla 1.

COMO DEFINIR LA PARTE MAESTRO DE LA RELACION MAESTRO-ESCLAVO PARA MYSQL.

1. Editar my.cnf (o my.ini si el sistema operativo es Windows)

1.1. Comentar (si existen), las líneas:

skip-networking

bind-address = 127.0.0.1

1.2. Incluir las líneas:

Para Linux:

log-bin = /var/log/nombre-sucursal-bin.log (para Linux)

Para Windows:

log-bin = c:\Archivos de programa\Mysql\Mysql Server 5.0\nombre-sucursal-bin.log

Para Linux y para Windows:

binlog-do-db = nombre-base

server-id = número

Sustituir nombre-sucursal por el nombre de la sucursal de la que se trate, por ejemplo: A.

Sustituir nombre-base por el nombre de la base de datos que esté utilizando en la sucursal, por ejemplo: baseA.

Sustituir número por el número que corresponda, indicado en la columna master de la Tabla 1, siguiendo con nuestro ejemplo: 102.

1.3. Guardar los cambios y salir del editor.

1.4. Reiniciar MySQL

service mysqld restart

1.5. Crear usuario esclavo

mysql –u root [-ppassword]

Nota: si el usuario root tiene contraseña (como debería de ser), escribirla después del modificador –p y sin dejar ningún espacio.

mysql>CREATE USER esclavo IDENTIFIED BY ‘password’;

mysql>GRANT REPLICATION SLAVE ON *.* TO esclavo@’%’ IDENTIFIED BY ‘password’;

mysql>FLUSH PRIVILEGES;

mysql>use nombre-base;

mysql>FLUSH TABLES WITH READ LOCK;

Con esto aseguramos que ningún usuario pueda modificar las tablas de la base de datos, se recomienda dar aviso de que se salgan para evitar contratiempos.

mysql>SHOW MASTER STATUS;

Debemos tomar nota de la información mostrada como resultado del comando, ya que se utilizará mas tarde.

Ejemplo:

+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183 | exampledb | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql>quit;

1.6. Respaldar la Base de Datos

mysqldump –u root [–ppassword] --opt nombre-base [|bzip] > nombre-base.sql[.bz2]

1.7. Quitar el bloqueo a las tablas

mysql –u root –p[password]

mysql>UNLOCK TABLES;

mysql>quit;

1.8. Pasar el respaldo realizado al servidor esclavo

1.8.1. Opción 1: Vía SCP

scp nombre-base.sql[.bz2] root@192.168.253.1:nombre-base.sql[.bz2]

donde 192.168.253.1 es la dirección ip, correspondiente al servidor Linux del corporativo, visto desde el punto de vista de la vpn.

El archivo quedará en el directorio /home de root en el servidor esclavo.

1.8.2. Opción 2: Vía GoToAssist

Transferir el archivo con la herramienta de soporte GoToAssit al servidor esclavo.

COMO DEFINIR LA PARTE ESCLAVO DE LA RELACION MAESTRO-ESCLAVO PARA MYSQL.

1. Editar el archivo de configuración my.cnf

Entrando con el usuario root al servidor:

cd /etc

nano my.cnf

Incluir las siguientes líneas:

[mysqldxxx]

socket = /tmpmysqldxxx.sock

port=yyyy

pid-file= /var/lib/mysqlxxx/localhost.pid

datadir= /var/lib/myqlxxx

user=root

log-error= /var/log/mysqldxxx.log

#server-id=xxx

#master-host=192.168.253.nnn

#master-user=esclavo

#master-password=password

#master-connect-retry=60

#replicate-do-db=nombre-base

#replicate-ignore-db=sfcontrol

#replicate-ignore-db=mysql

#replicate-ignore-table=nombre-base.JOURNAL

Donde:

xxx es el número de identificación de la instancia de mysql del esclavo para la base en cuestión, de acuerdo a lo indicado en la columna slave de la Tabla 1.

yyyy es el número de puerto asociado a la instancia de mysql del esclavo para la base en cuestión, de acuerdo a lo indicado en la columna pto. en corporativo de la Tabla 1.

nnn es el número de la última parte de la dirección ip del servidor maestro, de acuerdo a lo indicado en la columna ip de la vpn de la Tabla 1.

nombre-base es el nombre de la base de la base a replicar, de acuerdo a lo indicado en la columna instalación de la Tabla 1.

2. Guardar y salir del editor

3. Crear directorio para la instancia de mysql

mkdir /var/lib/mysqlxxx

4. Instalar la nueva base en el servidor esclavo

mysql_install_db --datadir=/var/lib/mysqlxxx

5. Verificar que existan las bases mysql y test

En el directorio /var/lib/mysqlxxx deben existir las bases mysql y test.

6. Iniciar la nueva instancia

mysqld_multi start xxx

7. Crear la Base de Datos esclava

mysql –h 127.0.0.1 –port=yyyy -u root –p

Enter password:

mysql>CREATE DATABASE nombre-base;

mysql>quit;

8. Cargar el respaldo que se hizo en el master

Si se utilizó bzip2:

bunzip2 nombre-base.sql.bz2

mysql –h 127.0.0.1 –port=yyyy –u root [-ppassword] < nombre-base.sql

9. Editar el archivo de configuración my.cnf

Para la instancia que estemos trabajando eliminar el # de las líneas que lo tienen descritas en el punto 1 de esta sección.

Guardar y salir del editor.

10. Reiniciar el servicio para la instancia que estamos trabajando

mysqld_multi stop xxx

mysqld_multi start xxx

11. Iniciar sincronización

mysql –h 127.0.0.1 --port=yyyy –u root [-ppassword]

mysql>SLAVE STOP;

mysql>CHANGE MASTER TO MASTER_HOST=’192.168.253.nnn’, MASTER_USER=’esclavo’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’sucursal-bin.sss’, MASTER_LOG_POS=pos;

· MASTER_HOST es la dirección ip del servidor maestro

· MASTER_USER es esclavo

· MASTER_PASSWORD es password

· MASTER_LOG_FILE es el nombre del archivo que se mostró cuando dimos la instrucción SHOW MASTER STATUS en el servidor maestro, como indicamos en la sección anterior.

· MASTER_LOG_POS es el número que aparece en la columna Position de la tabla que aparece como resultado de la instrucción SHOW MASTER STATUS en el servidor maestro, como indicamos en el ejemplo de la sección anterior.

mysql>SLAVE START;

mysql>SHOW SLAVE STATUS;

Verificar que se esté realizando la replicación automática.

mysql>quit;