0% encontró este documento útil (0 votos)
122 vistas7 páginas

5.1.1.2 Activación de Espejeo en Un DBMS.: Replicationslave

1) Asegúrese de que las versiones de MySQL en el maestro y esclavo sean compatibles y use la versión más reciente. 2) Cree una cuenta de replicación en el maestro con el privilegio REPLICATION SLAVE para que el esclavo se conecte. 3) Tome una copia binaria o volcado SQL de los datos del maestro y transfiera los archivos al esclavo.

Cargado por

andu892345
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
122 vistas7 páginas

5.1.1.2 Activación de Espejeo en Un DBMS.: Replicationslave

1) Asegúrese de que las versiones de MySQL en el maestro y esclavo sean compatibles y use la versión más reciente. 2) Cree una cuenta de replicación en el maestro con el privilegio REPLICATION SLAVE para que el esclavo se conecte. 3) Tome una copia binaria o volcado SQL de los datos del maestro y transfiera los archivos al esclavo.

Cargado por

andu892345
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

5.1.1.2 Activacin de espejeo en un DBMS.

Asegrese de que las versiones de MySQL instalado en el maestro y en el esclavo son


compatibles , debe usar la versin ms reciente de MySQL en maestro y servidor.
Por favor no reporte bugs hasta que ha verificado que el problema est presente en la
ltima versin de MySQL.
Prepare una cuenta en el maestro que pueda usar el esclavo para conectar. Este cuenta debe
tener el privilegio REPLICATIONSLAVE . Si la cuenta se usa slo para replicacin (lo que se
recomienda), no necesita dar ningn privilegio adicional. (Para informacin sobre preparar
cuentas de usuarios y privilegios.

Suponga que su dominio es mydomain.com y que quiere crear una cuenta con un nombre de
usuario de repl que puedan usar los esclavos para acceder al maestro desde cualquier
equipo en su dominio usando una contrasea de slavepass. Para crear la cuenta, use el
comando GRANT:

mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';


Si quiere usar los comandos LOAD TABLE FROM MASTER o LOAD DATA FROM MASTER desde
el servidor esclavo, necesita dar a esta cuenta privilegios adicionales:

De a la cuenta el privilegio global SUPER y RELOAD .

Otorgue el privilegio SELECT para todas las tablas que quiere cargar. Cualquier tabla maestra
desde la que la cuenta no puede hacer un SELECT se ignoran por LOAD DATA FROM MASTER.
Si usa slo tablas MyISAM , vuelque todas las tablas y bloquee los comandos de escritura
ejecutando un comandoFLUSH TABLES WITH READ LOCK :

mysql> FLUSH TABLES WITH READ LOCK;
Deje el cliente en ejecucin desde el que lanza el comando FLUSH TABLES para que pueda
leer los efectos del bloqueo. (Si sale del cliente, el bloqueo se libera.) Luego tome una muestra
de los datos de su servidor maestro.
La forma ms fcil de crear una muestra es usar un programa de archivo para crear una copia
de seguridad binaria de las bases de datos en su directorio de datos del maestro. Por ejemplo.
usetar en Unix, o PowerArchiver, WinRAR, WinZip, o cualquier software similar en Windos.
Para usar tar para crear un archivo que incluya todas las bases de datos, cambie la
localizacin en el directorio de datos del maestro, luego ejecute el comando:

shell> tar -cvf /tmp/mysql-snapshot.tar .

Si quiere que el archivo slo incluya una base de datos llamada this_db, use este comando:

shell> tar -cvf /tmp/mysql-snapshot.tar ./this_db

Luego copie el archivo en el directorio /tmp del servidor esclavo. En esa mquina, cambie la
localizacin al directorio de datos del esclavo, y desempaquete el fichero usando este
comando:

shell> tar -xvf /tmp/mysql-snapshot.tar

Puede no querer replicar la base de datos mysql si el servidor esclavo tiene un conjunto
distinto de cuentas de usuario a la existente en el maestro. En tal caso, debe excluirla del
archivo. Tampoco necesita incluir ningn fichero de log en el archivo, o los ficheros
master.info o relay-log.info files.
Mientras el bloqueo de FLUSH TABLES WITH READ LOCK est en efecto, lee el valor del
nombre y el desplazamiento del log binario actual en el maestro:

mysql> SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+


La columna File muestra el nombre del log, mientras que Position muestra el
desplazamiento. En este ejemplo, el valor del log binario es mysql-bin.003 y el
desplazamiento es 73. Guarde los valores. Los necesitar ms tarde cuando inicialice el
servidor. Estos representan las coordenadas de la replicacin en que el esclavo debe
comenzar a procesar nuevas actualizaciones del maestro.
Una vez que tiene los datos y ha guardado el nombre y desplazamiento del log, puede
reanudar la actividad de escritura en el maestro:

mysql> UNLOCK TABLES;

Si est usando tablas InnoDB , debera usar la herramienta InnoDB Hot Backup. Realiza
una copia consistente sin bloquear el servidor maestro, y guarda el nombre y desplazamiento
del log que se corresponden a la copia para usarlo posteriormente en el esclavo. InnoDB Hot
Backup es una herramienta no libre (comercial) que no est includa en la distribucin de
MySQL estndar.
Sin la herramienta Hot Backup , la forma ms rpida de hacer una copia binaria de los datos
de las tablasInnoDB es parar el maestro y copiar los ficheros de datos InnoDB, ficheros de
log, y ficheros de definicin de tablas (ficheros .frm). Para guardar los nombres de ficheros
actual y desplazamientos, debe ejecutar el siguiente comando antes de parar el servidor:

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;

Luego guarde el nombre del log y el desplazamiento desde la salida de SHOW MASTER
STATUS como se mostr antes. Tras guardar el nombre del log y el desplazamiento, pare el
servidor sin bloquear las tablas para asegurarse que el servidor para con el conjunto de datos
correspondiente al fichero de log correspondiente y desplazamiento:

shell>mysqladmin -u rootshutdown

Una alternativa que funciona para tablas MyISAMyInnoDB es realizar un volcado SQL del
maestro en lugar de una copia binaria como se describe en la discusin precedente. Para ello,
puede usar mysqldump --master-data en su maestro y cargar posteriormente el fichero de
volcado SQL en el esclavo. Sin embargo, esto es ms lento que hacer una copia binaria.
Si el maestro se ha ejecutado previamente sin habilitar --log-bin , el nombre del log y las
posiciones mostradas por SHOW MASTER STATUS o mysqldump --master-data estn vacos.
En ese caso, los valores que necesita usar posteriormente cuando especifica el fichero de log
del esclavo y la posicin son una cadena vaca ('') y 4.
Asegrese que la seccin [mysqld] del fichero my.cnf en el maestro incluye una opcin
log-bin . Esta seccin debe tambin tener la opcin server-id=master_id , donde
master_id debe ser un entero positivo de 1 a 2^32 - 1. Porejemplo:

[mysqld]
log-bin=mysql-bin
server-id=1

Si estas opciones no estn presentes, adalas y reinicie el servidor.
Pare el servidor que se vaya a usar como esclavo y aada lo siguiente a su fichero my.cnf :

[mysqld]
server-id=slave_id

El valor slave_id , como el valor master_id , debe ser un entero positivo de 1 a 2^32 - 1.
Adems, es muy importante que el ID del esclavo sea diferente del ID del maestro. Por
ejemplo:

[mysqld]
server-id=2

Si est preparando varios esclavos, cada uno debe tener un valor de server-id nico que
difiera del maestro y de cada uno de los otros esclavos. Piense en los valores de server-
idcomo algo similar a las direcciones IP: estos IDs identifican unvocamente cada instancia de
servidor en la comunidad de replicacin.

Si no especifica un server-id, se usa 1 si no ha definido un master-host, de otro modo se
usa 2. Tenga en cuenta que en caso de omisin de server-id, un maestro rechaza
conexiones de todos los esclavos, y un esclavo rechaza conectar a un maestro. Por lo tanto,
omitir el server-id es bueno slo para copias de seguridad con un log binario.

Si ha hecho una copia de seguridad binara de los datos del maestro, cpielo en el directorio
de datos del esclavo antes de arrancar el esclavo. Asegrese que los privilegios en los
ficheros y directorios son correctos. El usuario que ejecuta el servidor MySQL debe ser capaz
de leer y escribir los ficheros, como en el maestro.

Si hizo una copia de seguridad usando mysqldump, arranque primero el esclavo (consulte el
siguiente paso).

Arranque el esclavo. Si ha estado replicando prviamente, arranque el esclavo con la opcin -
-skip-slave-start para que no intente conectar inmediatamente al maestro. Tambin
puede arrancar el esclavo con la opcin --log-warnings (activada por defecto en MySQL
5.0), para obtener ms mensajes en el log de errores acerca de problemas (por ejemplo,
problemas de red o conexiones). En MySQL 5.0, las conexiones abortadas no se loguean en
el log de errores a no ser que el valor sea mayor que 1.

Si hace una copia de seguridad de los datos del maestro usando mysqldump, cargue el
fichero de volcado en el esclavo:

shell>mysql -u root -p <dump_file.sql

Ejecute los siguientes comandos en el esclavo, reemplazando los valores de opciones con los
valores relevantes para su sistema:

mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;

La siguiente tabla muestra la longitud mxima para las opciones de cadenas de caracteres:


MASTER_HOST 60
MASTER_USER 16
MASTER_PASSWORD 32
MASTER_LOG_FILE 255
Arranque el flujo esclavo:

mysql> START SLAVE;
Una vez realizado este procedimiento, el esclavo debe conectar con el maestro y atapar
cualquier actualizacin que haya ocurrido desde que se obtuvieron los datos.
Si ha olvidado asignar un valor para server-id en el maestro, los esclavos no son capaces
de conectar.
Si olvida asignar un valor para server-id en el esclavo, obtiene el siguiente error en el log de
errores:

Warning: You should set server-id to a non-0 value if master_host is set;
we will force server id to 2, but this MySQL server will not act as a
slave.

Tambin encuentra mensajes de error en el log de errores del esclavo si no es capaz de
replicar por ninguna otra razn.

Una vez que un esclavo est replicando, puede encontrar en su directorio de datos un fichero
llamadomaster.info y otro llamado relay-log.info. El esclavo usa estos dos ficheros
para saber hasta que punto ha procesado el log binario del maestro. No borre o edite estos
ficheros, a no ser que realmente sepa lo que hace y entienda las implicaciones. Incluso en tal
caso, es mejor que use el comando CHANGE MASTER TO.
Nota: El contenido de master.info subedita algunas de las opciones especificadas en lnea
de comandos o en my.cnf
Una vez que tiene una copia de los datos, puede usarlo para actualizar otros esclavos
siguiendo las porciones del procedimiento descrito. No necesita otra muestra de los datos del
maestro; puede usar la misma para todos los esclavos.
Nota: para la mayor durabilidad y consistencia posible en una inicializacin de replicacin
usando InnoDB con transacciones debe
usar innodb_flush_logs_at_trx_commit=1, sync-binlog=1, y innodb_safe_binlog en
su fichero my.cnf del maestro.

También podría gustarte