Comprendo. Como inteligencia artificial, no tengo la capacidad de generar y exportar archivos directamente en formato PDF. Mi función es proporcionar información y texto, como la guía que he creado para ti. Sin embargo, puedo darte la guía completa en un formato limpio y ordenado para que tú mismo puedas convertirla a PDF de forma muy sencilla. ### Solución: Cómo crear tu PDF en 2 minutos Sigue estos simples pasos: 1. **Copia todo el texto** que aparece a continuación, desde el título "Guía Completa..." hasta el final. 2. **Abre un editor de texto** como Microsoft Word, Google Docs, LibreOffice Writer o incluso el Bloc de notas. 3. **Pega el texto** copiado en un documento nuevo. 4. Ve al menú **`Archivo > Guardar como`** o **`Archivo > Exportar`** y selecciona el formato **PDF**. De esta manera, tendrás el documento guardado en tu ordenador con un formato profesional y listo para consultar cuando lo necesites. ----- ### **Guía Completa: Sincronización de MySQL (XAMPP) a un Servidor Remoto con Debezium** Este documento detalla el proceso completo para capturar cambios en tiempo real de una base de datos MySQL local que se ejecuta en XAMPP bajo Windows y replicarlos en una base de datos MySQL remota. #### **1. Requisitos Previos** Asegúrate de tener lo siguiente antes de comenzar: * **XAMPP**: Instalado y con el servicio de MySQL en funcionamiento. * **Acceso a Servidor Remoto**: Credenciales y dirección de un servidor de base de datos MySQL remoto. * **JDK**: Java Development Kit (versión 8 o superior) instalado en tu Windows. Puedes verificarlo ejecutando `java -version` en una terminal. ----- #### **2. Preparación de la Base de Datos Local (XAMPP)** Debezium requiere que el registro binario (`binlog`) de MySQL esté habilitado para poder leer los cambios. **Habilitar el `binlog`** 1. **Localiza `my.ini`**: Abre el archivo de configuración de MySQL, ubicado generalmente en `C:\xampp\mysql\bin\my.ini`. 2. **Edita la configuración**: Dentro de la sección `[mysqld]`, añade o modifica las siguientes líneas para activar el `binlog`: ```ini [mysqld] server-id=1 log_bin=mysql-bin binlog_format=ROW binlog_row_image=FULL ``` 3. **Reinicia MySQL**: Guarda el archivo `my.ini` y reinicia el servicio de MySQL desde el panel de control de XAMPP para que los cambios surtan efecto. **Crear un Usuario para Debezium** Por seguridad, crea un usuario específico en tu base de datos local para que Debezium lo utilice. 1. Accede a tu MySQL local (puedes usar phpMyAdmin o la consola). 2. Ejecuta el siguiente script SQL. Recuerda cambiar `'password'` por una contraseña segura. ```sql CREATE USER 'debezium'@'localhost' IDENTIFIED BY 'password'; GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'localhost'; FLUSH PRIVILEGES; ``` ----- #### **3. Instalación de Apache Kafka** Debezium necesita Apache Kafka para funcionar. Es crucial descargar la versión correcta para evitar errores. 1. **Descarga la versión Binaria**: Ve a la página de descargas de Apache Kafka. Descarga la versión **binaria** (Binary download), no el código fuente. Esto evitará el error `Classpath is empty`. 2. **Extrae los archivos**: Descomprime el archivo `.tgz` descargado (puedes usar 7-Zip) en una ruta sencilla, por ejemplo, `C:\kafka`. 3. **Crea una carpeta para los conectores**: Dentro de `C:\kafka`, crea una nueva carpeta llamada `plugins`. Aquí instalarás los conectores de Debezium más adelante. ----- #### **4. Instalación de los Conectores Debezium** 1. **Descarga el conector de MySQL**: Obtén el archivo comprimido del conector desde el sitio oficial de Debezium. 2. **Descarga el conector JDBC**: Este se usará para enviar los datos al servidor remoto. Descárgalo desde la documentación del conector JDBC de Debezium. 3. **Instala los conectores**: Extrae el contenido de **ambos** archivos descargados dentro de la carpeta que creaste previamente: `C:\kafka\plugins`. ----- #### **5. Configuración y Ejecución de Servicios** Ahora iniciarás los servicios necesarios en el orden correcto. Abre una terminal de comandos de Windows para cada paso. **Paso 1: Iniciar Zookeeper** ```bash # Navega al directorio de Kafka y ejecuta: C:\kafka\bin\windows\zookeeper-server-start.bat C:\kafka\config\zookeeper.properties ``` **Paso 2: Iniciar Kafka** Abre una **nueva terminal** y ejecuta: ```bash # Navega al directorio de Kafka y ejecuta: C:\kafka\bin\windows\kafka-server-start.bat C:\kafka\config\server.properties ``` **Paso 3: Configurar e Iniciar Kafka Connect** 1. **Edita la configuración**: Abre el archivo `C:\kafka\config\connect-distributed.properties` con un editor de texto. Busca la propiedad `plugin.path` y asegúrate de que apunte a tu carpeta de plugins. ```properties plugin.path=C:/kafka/plugins ``` 2. **Inicia Kafka Connect**: Abre una **tercera terminal** y ejecuta: ```bash # Navega al directorio de Kafka y ejecuta: C:\kafka\bin\windows\connect-distributed.bat C:\kafka\config\connect-distributed.properties ``` Mantén estas tres terminales abiertas. ----- #### **6. Creación y Registro de los Conectores** El último paso es decirle a Debezium a qué base de datos conectarse (origen) y a dónde enviar los datos (destino). **Archivo 1: Conector de Origen (Tu XAMPP)** Crea un archivo llamado `mysql-source-connector.json` en `C:\kafka` y ajusta los valores: ```json { "name": "mysql-source-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "tasks.max": "1", "database.hostname": "localhost", "database.port": "3306", "database.user": "debezium", "database.password": "password", "database.server.id": "101", "database.server.name": "local_xampp_db", "database.include.list": "tu_base_de_datos", "database.history.kafka.bootstrap.servers": "localhost:9092", "database.history.kafka.topic": "dbhistory.local_xampp" } } ``` * **`database.password`**: La contraseña que definiste para el usuario `debezium`. * **`database.include.list`**: El nombre exacto de la base de datos en tu XAMPP que quieres sincronizar. **Archivo 2: Conector de Destino (Tu Servidor Remoto)** Crea un segundo archivo llamado `mysql-sink-connector.json` en `C:\kafka`. ```json { "name": "mysql-sink-connector", "config": { "connector.class": "io.debezium.connector.jdbc.JdbcSinkConnector", "tasks.max": "1", "topics.regex": "local_xampp_db\\.tu_base_de_datos\\..*", "connection.url": "jdbc:mysql://:3306/", "connection.user": "usuario_remoto", "connection.password": "password_remoto", "insert.mode": "upsert", "primary.key.mode": "record_key", "auto.create": "true", "auto.evolve": "true" } } ``` * **`topics.regex`**: Reemplaza `tu_base_de_datos` con el nombre real. * **`connection.url`**: Sustituye `` y ``. * **`connection.user`** y **`connection.password`**: Credenciales de la base de datos remota. **Registrar los Conectores** Abre una **nueva terminal** y usa `curl` para enviar las configuraciones. 1. **Registra el conector de origen**: ```bash curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d @C:\kafka\mysql-source-connector.json ``` 2. **Registra el conector de destino**: ```bash curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d @C:\kafka\mysql-sink-connector.json ``` Si los comandos son exitosos, la sincronización habrá comenzado.