miércoles, 15 de mayo de 2013

actividad espejeo

Ejecución de un espejo MySQL pública requiere actualmente de unos 250 GB de almacenamiento. El ancho de banda que se utilizará depende del número de espejos en su área, y el número de usuarios en su área que opten por utilizar el espejo.
Tenemos unos espejos primarios que se utilizan para proporcionar datos para las otras réplicas, utilizando el rsync programa. El sitio reflejado consiste sólo en HTML estáticas, imágenes y otros archivos, así que no hay otros requisitos especiales del servidor.
Para mantener el espejo hasta la fecha, tendrá que configurar una tarea cron como la siguiente:
* 36/6 *** rsync-a - delete - delete-después de \
    rsync :/ / example.com / mysql / / ruta / al / local / mirror /
Usted debe sincronizar el espejo, al menos, todos los días, y no más de una vez cada hora. Si personaliza el minuto en el que las actualizaciones de espejo, que le ayudarán a repartir la carga en nuestros servidores espejo primario.

Como montar replicación en master-slave con MySQL

Mediante la replicación master-slave de MySQL podemos repartir las lecturas de la base de datos entre varios hosts. Vamos a ver como montar un slave de MySQL.
Primero de todo debemos tener habilitado los binary logs y definir un server-id únicodentro del entorno de replicación. Para hacer esto deberemos editar el my.cnfañadiendo:
server-id=1
log-bin = mysql-bin
sync_binlog                     = 1
max-binlog-size                 = 500M
expire_logs_days                = 4
innodb_flush_log_at_trx_commit  = 1
En el slave debemos añadir también un server-id único:
server-id=2
relay-log               = mysqld-relay-bin
max-relay-log-size      = 500M
relay_log_purge         = 1
Deberemos reiniciar los MySQL para aplicar los cambios. A continuación deberemos crear un usuario para la replicación en el master:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'secretoreplicacion';
Query OK, 0 rows affected (0.04 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
A continuación deberemos realizar la copia inicial de la base de datos. Se puede hacer de muchas formas, por ejemplo mediante snapshots:
mysql> FLUSH TABLES;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 |     1284 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Creamos un snapshot y copiamos los datos del datadir del master al datadir del slave:
$ lvcreate -L16G -s -n mysql.snap /dev/local/mysql
Una vez tenemos los datos podemos liberar el LOCK, o si lo hacemos con un snapshot inmediatamente después de crearlo:
mysql> UNLOCK TABLES;
En el slave deberemos indicar los datos del master para empezar la replicación:
mysql> slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Los datos que hemos sacado del SHOW MASTER STATUS deberemos pasárselos alslave:
CHANGE MASTER TO MASTER_HOST='192.168.4.1', MASTER_USER='slave', MASTER_PASSWORD='secretoreplicacion', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=1284, MASTER_PORT=3306;
A continuación iniciamos la replicación mediante el siguiente comando:
START SLAVE;
Mediante SHOW SLAVE STATUS podemos ver el estado del slave:
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.4.1
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 951
               Relay_Log_File: mysqld-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              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: 951
              Relay_Log_Space: 407
              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: 382
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
1 row in set (0.00 sec)
Veremos como poco a poco se va reduciendo el “Seconds_Behind_Master” hasta estar sincronizados con las escrituras que se hayan hecho mientras copiabamos los datafiles.
        Seconds_Behind_Master: 0
A continuación, podemos hacer una prueba con los siguientes comandos en elmaster:
mysql> create database lolme;
Query OK, 1 row affected (0.00 sec)

mysql> use lolme;
Database changed
mysql> create table aaa(id int);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into aaa values(2);
Query OK, 1 row affected (0.00 sec)
A continuación en el slave podremos comprobar como se han replicado:
mysql> use lolme;
Database changed
mysql> select * from aaa;
+------+
| id   |
+------+
|    2 |
+------+
1 row in set (0.00 sec)


videos: 







Integrantes: 
Alexa Maria Carlos Barraza
Ricardo Alonso Alvarez Enriquez

No hay comentarios:

Publicar un comentario