Proceso de Replicación para el CMS Joomla! de la pagina WWW del INE COORDINACIÓN DE SISTEMAS E INFORMÁTICA DIRECCIÓN DE SISTEMAS Y MANEJO DE INFORMACIÓN Lic. Alejandro Roberto Rubio Pérez Subdirector de Sistemas INE CMS instalado: Joomla! Versión: 1.5.x Consideraciones Iniciales El procedimiento considera que la replicación será Maestro-Esclavo, es decir, en uno de los servidores – el maestro – Joomla! y sus plugins serán modificados, actualizados y eliminados; mientras que el esclavo será de lectura/respaldo y reflejará los cambios conforme se vayan efectuando. Sobre los servidores: 1. Al servidor con la instalación original de Joomla! se le denominará Maestro y al servidor que tendrá la replicación será llamado Esclavo. 2. Los servidores pueden tener diferentes características (tamaño de disco, sistema operativo, etc.) pero cumpliendo con las necesidades mínimas. 3. Ambos equipos deben tener instalados el software MySQL, PHP y Apache; cabe mencionar que no es necesario que sea la misma versión, sólo se requiere que las versiones sean compatibles y que sean compilados con los mismos parámetros, así por ejemplo un servidor puede tener MySQL 5.1.1 y el otro MySQL 5.1.4 o PHP 4.3 y el otro PHP 5.2., para más detalles revise el documento de instalación de Joomla! 4. El usuario de sistema operativo que se usa para instalar las aplicaciones en el esclavo debe tener el mismo nombre, clave y privilegios que el maestro. 5. Ambos equipos deben tener instalada la misma versión de Joomla! 6. El nombre de la Base y del usuario de Mysql de Joomla! deberá ser el mismo en ambos servidores. 7. El usuario administrador de Joomla! en el esclavo debe tener el mismo nombre y clave que el del servidor original. 8. La ruta de instalación del Joomla! en el esclavo deberá ser la misma que la del maestro. Sobre el software Joomla! guarda archivos y scripts PHP en su ruta de almacenamiento (directorio) y al mismo tiempo hace actualizaciones en la Base de Datos, en esta caso Mysql. Por ello hay que procesar amas cosas. Para ejemplificar el proceso de replicación, El servidor Maestro se definirá con la ip 192.168.1.1, con usuario de Sistema Operativo webcms con password cmsw3b1, con la Base de Datos del CMS en mysql cms-del-ine y usuario de Mysql cms-user con pasword cmspass. Y para la replica el usuario de replicación será replicacion con password secundario. El servidor Esclavo se definirá con la ip 192.168.1.2, con usuario de Sistema Operativo webcms con password cmsw3b1, con la Base de Datos del CMS en MySql cms-del-ine y usuario de mysql cms-user con pasword cmspass. Replicación de los archivos de Joomla! Para replicar el directorio de Joomla! se puede usar un software de copia de subdirectorios en este caso ftpcopy1 ftpcopy --user=webcms --pass=cmsw3b1 --tries=3 \ ftp://192.168.1.1/ruta-de-joomla-en-el-servidor-maestro/joomla /ruta-de-joomla-en-el-esclavo/joomla Se puede hacer un script automatizado. Replicación de la Base de Datos de Joomla! Para replicar la base de datos hay que hacer actividades tanto para la BD Maestra como en la BD Esclava. Base Datos Maestra: 1. Se debe editar el archivo my.cnf (en Unix/Linux que esta en el subdirectorio /etc). #Se debe asegurar que el servidor MySQL use la IP asignada y use el puerto por #definición 3306. bind-address = 192.168.1.1 # Se debe indicar el identificador de la BD (en este caso el maestro será 1) server-id =1 # Se debe usar el comando binlog-do-db para indicar la(s) Base(s) de Dato(s) a #replicar binlog-do-db=cms-del-ine #Todas las Bases de Datos que no se van a replicar se deben listar. binlog-ignore-db=test binlog-ignore-db=mysql …. 2. se debe reiniciar MySQL 3. Se debe entrar como root a MySQL y verificar la funcionalidad de la configuración. mysql> SHOW MASTER STATUS; File Position Binlog_Do_DB Binlog_Ignore_DB mysql-bin.000022 133144145 Cms-del-ine test,mysql 1 row in set (0.00 sec) 4. Se creara el usuario de replicación y se actualizan los permisos de usuario. MySQL> grant replication slave on *.* to 'replicacion'@'192.168.1.2' identified by 'secundario'; mysql>Flush priviledges; 5. Se debe hacer un respaldo de la Base de Datos mysqldump --opt -u cms-user --password=cmspass --databases cms-del-ine >/respaldo/respaldo.del.cms-del-ine.sql Base de Datos Esclava: 1. Se debe editar el archivo my.cnf (en Unix/Linux esta en el subdirectorio /etc). #Se debe asegurar que el servidor MySQL use la IP asignada y use el puerto por #definición 3306. bind-address = 192.168.1.2 # Se debe indicar el identificador de la BD (en este caso el esclavo será 2) server-id =2 #Se deben indicar los datos del servidor maestro master-host = 192.168.1.1 master-user = replicacion master-password = secundario master-port = 3306 2. Se crea la copia de la base de datos y del usuario de la base de datos de Joomla! 3. Se inserta la copia de la BD. MySQL <respaldo.del.cms-del-ine.sql 4. Se verifica la configuración de la replicación MySQL> show slave status\G; STart SLAVE IO_THREAD; Slave_IO_State: Stopped Master_Host: 192.168.1.1 Master_User: replicacion Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000022 Read_Master_Log_Pos: 131206360 Relay_Log_File: mysqld-relay-bin.000039 Relay_Log_Pos: 131206497 Relay_Master_Log_File: mysql-bin.000022 Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 131206360 Relay_Log_Space: 131206497 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 1 row in set (0.00 sec) MySQL>start slave; 6. Se debe verificar que este operando la replicación MySQL> show slave status\G; … Slave_IO_State: Waiting for master to send event … … Slave_IO_Running: Yes Slave_SQL_Running: Yes Así, cuando el Maestro ejecute un comando DML, este se reflejará en el esclavo. Referencias http://www.howtoforge.com/mysql_database_replication Proceso de Replicación para el CMS Joomla! de la pagina WWW del INE COORDINACIÓN DE SISTEMAS E INFORMÁTICA DIRECCIÓN DE SISTEMAS Y MANEJO DE INFORMACIÓN Para mayor información Lic. Alejandro Rubio Pérez arubio@ine.gob.mx Ext. 13164