Mar 09
11
Tras decidir, como se indica en el post anterior, que el sistema de bases de datos que utilizaríamos en nuestro proyecto sería, finalmente, por replicación hemos empezado a hacer unas cuantas pruebas. Lo primero de todo decir que, después de unas horas de lucha intensa con diferentes fuentes de información sobre master-slave de MySQL, hemos conseguido montar un primer sistema sencillo con el que podremos hacer diferentes prueb as encaradas a su implementación final sobre Amazon EC2. En la publicación que os presento hoy repasaremos estos pasos iniciales que tanto nos ha costado realizar. Partimos de una base de datos (base_datos) completamente vacía (sin registro alguno); para bases de datos que no esté vacía, el sistema de montaje es un poco diferente.
NOTA: El sistema operativo sobre el cuál realizamos el montaje es Ubuntu 8.10.
Configuración del master
En este apartado os indicaré los pasos que hemos seguido para montar nuestro servidor master.
- Como muchos de vosotros estaréis pensando, uno de los pasos necesarios para la configuración del sistema de MySQL es la edición de su archivo de configuración (valgase la redundancia). En este caso, efectivamente, lo primero que tendremos que hacer será editar my.cnf con privilegios de root; para ello, abriremos el terminal y escribiremos la siguiente línia (la ruta puede variar. Os dejo la ruta donde se encuentra mi archivo de configuración):
sudo gedit /etc/mysql/my.cnf
- Introducir en el apartado [mysqld] los siguientes atributos:
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
log-bin=mysql-bin
binlog-do-db=base_datos
Vamos por partes:
- El id del server, para definir un master, debe ser 1. Por eso indicamos que server-id=1.
- innodb_flush_log_at_trx_commit=1 y sync_binlog=1 son dos atributos que colocamos en este caso (leer más en el artículo anterior) ya que decidímos que el master debería tener como motor de almacenamiento el InnoDB. Para más información, consultar la documentación de MySQL.
- log-bin debe indicar en que archivo se escribirá el log del máster. En este caso, utilizamos el mismo que utiliza MySQL. Os dejo un tutorial en el que podréis ver que este archivo log puede destinarse en cualquier lugar.
- binlog-do-db=base_datos , le indica al master sobre qué base de datos debe guardar la actividad.
IMPORTANTE: Comentaremos las opciones de skip-networking y bind-address que se encuentran en ese mismo archivo de configuración, en el caso de que existan. Para comentar las líneas debemos situarnos al principio de la línea y añadir un símbolo #.
- Reiniciar el servidor MySQL
sudo /etc/init.d/mysql restart
- Acceder a la consola de MySQL, como root.
mysql -u root -p
Dentro crearemos un usuario “slave” para que pueda ponerse en contacto con nuestro master y retendremos información del estado del máster para establecer un punto de inicio antes de comenzar el proceso de replicación con el slave.
GRANT REPLICATION SLAVE ON *.* TO 'usuarioslave'@'%' IDENTIFIED BY 'clave_acceso_slave';
FLUSH PRIVILEGES;
USE base_datos;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+----------------------------+------------+----------------------+---------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------------+-------------+----------------------+---------------------------+
| mysql-bin.000007 | 98 | base_datos | |
+----------------------------+------------+----------------------+---------------------------+
UNLOCK TABLES;NOTA: ‘%’ puede substituirse también por una dirección IP o DNS concreta. Pero para hacer pruebas, este símbolo ya nos sirve.
- NOTA2: En el caso en el que queramos más slaves, tendremos que darles permisos a cada uno de ellos, con la línea descrita “GRANT REPLICATION SLAVE ON *.* TO ‘usuarioslave’@'%’ IDENTIFIED BY ‘clave_acceso_slave’;” .
- Una vez hecho todo esto, saldremos de la consola de MySQL con la sentencia:
exit;
NOTA DE LA AUTORA: A partir de aquí empezaría la configuración del slave. Deseo que tengáis paciencia, en breve la acabaré de redactar y la compartiré con vosotros. Si téneis cualquier duda o sugerencia, solo téneis que dejar un comentario
. Muchas gracias!
Esto es todo, de momento, desde el zulo, pigüinos y manzaitas world! (aún, sin jefe…
)
