|
| 1 | +# MySQL-Admin Project |
| 2 | + |
| 3 | +## Descripción del Proyecto |
| 4 | + |
| 5 | +El proyecto **MySQL-Admin** es una solución integral destinada a la administración, sincronización y migración de bases de datos MySQL. La arquitectura del sistema está diseñada para soportar múltiples flujos de datos: |
| 6 | + |
| 7 | +- **Sincronización de bases de datos MySQL remotas a locales**: A través del script `sync_mysql_remote.py`, en fase de pruebas, se replican datos de bases MySQL remotas al entorno local para facilitar pruebas y migraciones iniciales. |
| 8 | + |
| 9 | +- **Monitoreo en producción**: El script `mysql_monitor.py` se ejecuta en producción generando registros cada minuto para realizar análisis en tiempo real, detectar anomalías y mantener la salud de la base de datos. |
| 10 | + |
| 11 | +- **Migración y sincronización hacia MongoDB**: Con `sync_mysql_mongo.py`, se permite la migración automática de una o varias bases de datos MySQL a MongoDB. Además, está diseñado para ejecutarse de forma iterativa, de modo que la base de datos sincronizada en MongoDB pueda servir, en futuras iteraciones, como fuente para sincronizar otra base MySQL remota y así desacoplar el motor MySQL local de tareas adicionales. |
| 12 | + |
| 13 | +## Arquitectura y Flujo de Datos |
| 14 | + |
| 15 | +El proyecto sigue una arquitectura modular que permite separar los roles y responsabilidades de cada componente: |
| 16 | + |
| 17 | +1. **Sincronización Local y Remota**: Replicar tablas de bases de datos MySQL de un entorno remoto al local. |
| 18 | +2. **Monitoreo Continuo**: Recolección de datos y generación de logs periódicos para análisis y alertas. |
| 19 | +3. **Migración a MongoDB**: Consolidar datos de MySQL en MongoDB, ofreciendo flexibilidad y escalabilidad en el manejo de datos, con la posibilidad de servir como puente para sincronizaciones posteriores. |
| 20 | + |
| 21 | +## Módulos del Proyecto |
| 22 | + |
| 23 | +### Módulos Terminados y en Producción |
| 24 | + |
| 25 | +- **`mysql_monitor.py`**: En ejecución en producción. Este módulo genera registros (logs) una vez por minuto para monitorizar el estado y rendimiento de la base de datos MySQL local. |
| 26 | +- **`sync_mysql_mongo.py`**: Funciona correctamente según lo esperado. Inicialmente permite la migración automática de bases de datos MySQL a MongoDB. Además, su diseño iterativo posibilita, en futuras versiones, que la base sincronizada en MongoDB se utilice para sincronizar otra base MySQL remota, permitiendo un desacople del motor MySQL local. |
| 27 | +- **`mongo_analytics.py`**: En producción. Se encarga del análisis y procesamiento de datos provenientes de MongoDB para generar reportes y métricas adicionales. |
| 28 | +- **`monitor_cron.py`**: En producción. Este script se ejecuta periódicamente para almacenar métricas en MongoDB y garantizar la supervisión continua de los datos. |
| 29 | +- **`dashboard.py`**: En producción. Proporciona un dashboard interactivo accesible vía navegador, visualizando métricas de MySQL (uso de CPU, uso de memoria y transacciones) en tiempo real con gráficos interactivos y responsive. Permite seleccionar múltiples intervalos de tiempo para el análisis. |
| 30 | + |
| 31 | +> **Nota para IA:** Los módulos mencionados arriba están terminados y en funcionamiento. No se deben realizar modificaciones sobre estos módulos a menos que exista una autorización y acuerdo explícito por parte del desarrollador humano. |
| 32 | +
|
| 33 | +### Módulos en Fase de Prueba |
| 34 | + |
| 35 | +- **`sync_mysql_remote.py`**: Actualmente en fase de prueba, se encarga de sincronizar bases de datos MySQL de un entorno remoto al local. Este módulo es utilizado para validar la replicación y sirve como base para migraciones iniciales o pruebas de concepto. |
| 36 | + |
| 37 | +## Configuración |
| 38 | + |
| 39 | +1. **Variables de Entorno**: El proyecto utiliza un archivo `.env` para gestionar parámetros críticos de conexión, tales como: |
| 40 | + - Para conexiones remotas: `DBR_HOST`, `DBR_PORT`, `DBR_USERNAME`, `DBR_PASSWORD`. |
| 41 | + - Para conexiones locales: `DB_HOST`, `DB_PORT`, `DB_USERNAME`, `DB_PASSWORD`. |
| 42 | + - Listado de bases de datos a sincronizar: `MYSQL_DATABASES` (una lista separada por comas). |
| 43 | + |
| 44 | +2. **Instalación de Dependencias**: Asegúrate de tener instaladas las librerías requeridas (por ejemplo, `mysql-connector-python` y `python-dotenv`). Puedes instalarlas utilizando: |
| 45 | + |
| 46 | +```bash |
| 47 | +pip install mysql-connector-python python-dotenv |
| 48 | +``` |
| 49 | + |
| 50 | +## Uso |
| 51 | + |
| 52 | +- **Pruebas de Sincronización:** Ejecuta `sync_mysql_remote.py` para validar la sincronización entre bases de datos MySQL remotas y locales. |
| 53 | +- **Monitoreo en Producción:** El script `mysql_monitor.py` se ejecuta de manera continua para generar logs y vigilar el estado de la base de datos local. |
| 54 | +- **Migración a MongoDB:** Utiliza `sync_mysql_mongo.py` para migrar y mantener sincronizadas las bases de datos MySQL con su contraparte en MongoDB. |
| 55 | + |
| 56 | +## Consideraciones Generales |
| 57 | + |
| 58 | +- **Seguridad:** La construcción dinámica de consultas SQL requiere especial atención para evitar inyección SQL. Se asume que las variables de entorno están gestionadas de forma segura. |
| 59 | + |
| 60 | +- **Integridad de Datos:** Durante la sincronización, se deshabilitan temporalmente las restricciones de claves foráneas para permitir el truncado de tablas. Se recomienda evaluar la restauración de estas restricciones post-sincronización si es necesaria para garantizar la integridad referencial. |
| 61 | + |
| 62 | +- **Colaboración IA-Humano:** Este documento está pensado para servir tanto de guía para desarrolladores humanos como de referencia para sistemas IA. Las decisiones técnicas, metodológicas y el historial de cambios se documentan aquí para facilitar la colaboración continua y conservar la memoria de los procesos del proyecto. |
| 63 | + |
| 64 | +## Memoria y Contexto para IA |
| 65 | + |
| 66 | +Esta sección está destinada exclusivamente para el uso interno de la IA y como mecanismo de apoyo para reconstruir la memoria contextual del proyecto en futuras sesiones. Se recomienda que, en cualquier interacción, la IA utilice la información contenida en este README.md junto con las MEMORIES previas para mantener una perspectiva integral del proyecto. |
| 67 | + |
| 68 | +- **Arquitectura General:** El proyecto integra sincronización de datos entre MySQL y MongoDB, así como monitoreo en tiempo real de las bases de datos. |
| 69 | +- **Módulos Clave:** |
| 70 | + - `sync_mysql_remote.py`: Sincronización de bases MySQL remotas a locales (en fase de prueba). |
| 71 | + - `mysql_monitor.py`: Monitoreo en producción, generando logs cada minuto. |
| 72 | + - `sync_mysql_mongo.py`: Migración y sincronización de datos desde MySQL hacia MongoDB, con posibles usos futuros para desacoplar procesos. |
| 73 | + - `mongo_analytics.py`: Análisis y procesamiento de datos provenientes de MongoDB en producción. |
| 74 | + - `monitor_cron.py`: Ejecución periódica para almacenar métricas en MongoDB y garantizar la supervisión continua. |
| 75 | + - `dashboard.py`: Proporciona un dashboard interactivo para visualizar métricas de MySQL en tiempo real. |
| 76 | + |
| 77 | +- **Decisiones Técnicas:** Las variables de entorno y la modularidad en los scripts permiten un manejo flexible y seguro de las conexiones a bases de datos, asegurando la integridad de los datos durante la migración y sincronización. |
| 78 | + |
| 79 | +- **Directrices para Colaboración IA-Humano:** Los módulos que se encuentran en producción no deben ser modificados sin autorización explícita del desarrollador humano. El documento README.md, junto con las MEMORIES, sirve para conservar la historia de decisiones y facilitar el trabajo colaborativo. |
| 80 | + |
| 81 | +## Próximos Pasos |
| 82 | + |
| 83 | +- Revisión de los parámetros de sincronización y migración. |
| 84 | +- Experimentación controlada para desacoplar el motor MySQL local utilizando la base consolidada en MongoDB. |
| 85 | +- Incrementar pruebas y validaciones en el módulo `sync_mysql_remote.py` antes de avanzar a producción. |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +*Documentación dual para procesos institucionales y colaboración entre IA y desarrollador humano.* |
0 commit comments