Esta sección describe comandos SQL relacionados con replicación. Un grupo de comandos se usa para controlar los servidores maestros. El otro se usa para controlar servidores esclavos.
La replicación puede controlarse mediante la interfaz SQL. Esta sección discute los comandos para administrar los maestros de replicación. Sección 13.6.2, “Sentencias SQL para el control de servidores esclavos” discute comandos para administrar servidores esclavos.
PURGE {MASTER | BINARY} LOGS TO 'log_name
' PURGE {MASTER | BINARY} LOGS BEFORE 'date
'
Borra todos los logs binarios listados en el índice de log prévio al log especificado o fecha. Los logs se borran de la lista guardada en el fichero de índice de log, así que el log dado pasa a ser el primero.
Ejemplo:
PURGE MASTER LOGS TO 'mysql-bin.010'; PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';
El argumento de BEFORE
date
puede estar en formato
'YYYY-MM-DD hh:mm:ss'
.
MASTER
y BINARY
son
sinónimos en MySQL 5.0.
Si tiene un esclavo activo que actualmente esté leyendo uno de los logs que está intentando borrar, este comando no hace nada y falla con un error. Sin embargo, si un esclavo está dormido y purga los logs que quiere leer, el esclavo no es capaz de replicar cuando se despierta. El comando puede ejecutarse mientras los esclavos se replican. No necesita pararlos.
Para purgar logs, siga este procedimiento:
-
En cada servidor esclavo, use
SHOW SLAVE STATUS
para chequear qué log está leyendo. -
Obtinga una lista de los logs en el servidor maestro con
SHOW MASTER LOGS
. -
Determine el primer log entre todos los esclavos. Este es el log objetivo. Si todos los esclavos están actualizados, este es el último log de la lista.
-
Haga una copia de seguridad de todos los logs que vaya a borrar. (Este paso es opcional, pero siempre recomendable.)
-
Purgue todos los logs hasta el log objetivo, pero no lo incluya.
RESET MASTER
Borra todos los logs binarios listados en el fichero índice, resetea el fichero índice de lob binario a vaciar, y recrea un nuevo fichero de log binario.
SET SQL_LOG_BIN = {0|1}
Activa o desactiva el logueo binario para la conexión actual
(SQL_LOG_BIN
es una variable de sesión) si
el cliente conecta usando una cuenta que tenga el permiso
SUPER
. En MySQL 5.0, el comando se rechaza
con un error si el cliente no tiene este permiso.
SHOW BINLOG EVENTS [IN 'log_name
'] [FROMpos
] [LIMIT [offset
,]row_count
]
Muestra los eventos en el log binario. Si no especifica
'log_name'
, se muestra el primer log
binario.
La cláusula LIMIT
tiene la misma sintaxis
que para el comando SELECT
. Consulte
Sección 13.2.7, “Sintaxis de SELECT
”.
Nota: Realizar SHOW
BINLOG EVENTS
sin cláusula LIMIT
puede iniciar un proceso muy largo y que consume muchos
recursos mientras el servidor vuelca los contenidos completos
del log binario (lo que incluye la mayoría de las consultas
ejecutadas por MySQL) a stdout. Para guardar el log binario en
un fichero de texto para analizar posteriormente, use la
utilidad mysqlbinlog . Consulte
Sección 8.5, “La utilidad mysqlbinlog para registros binarios”.
SHOW MASTER LOGS SHOW BINARY LOGS
Lista los ficheros del log binario en el servidor. Este
comando se usa como parte del procedimiento descrito en
Sección 13.6.1.1, “Sintaxis de PURGE MASTER LOGS
” para determinar qué logs
pueden purgarse.
mysql> SHOW BINARY LOGS; +---------------+-----------+ | Log_name | File_size | +---------------+-----------+ | binlog.000015 | 724935 | | binlog.000016 | 733481 | +---------------+-----------+
En MySQL 5.0, SHOW BINARY LOGS
, es
equivalente a SHOW MASTER LOGS
. La columna
File_size
se muestra desde MySQL 5.0.7.
La replicación puede controlarse con la interfaz SQL. Esta sección discute comandos para administrar servidores de replicación esclavos. Sección 13.6.1, “Sentencias SQL para el control de servidores maestros” discute comandos para administrar servidores maestros.
CHANGE MASTER TOmaster_def
[,master_def
] ... master_def: MASTER_HOST = 'host_name
' | MASTER_USER = 'user_name
' | MASTER_PASSWORD = 'password
' | MASTER_PORT =port_num
| MASTER_CONNECT_RETRY =count
| MASTER_LOG_FILE = 'master_log_name
' | MASTER_LOG_POS =master_log_pos
| RELAY_LOG_FILE = 'relay_log_name
' | RELAY_LOG_POS =relay_log_pos
| MASTER_SSL = {0|1} | MASTER_SSL_CA = 'ca_file_name
' | MASTER_SSL_CAPATH = 'ca_directory_name
' | MASTER_SSL_CERT = 'cert_file_name
' | MASTER_SSL_KEY = 'key_file_name
' | MASTER_SSL_CIPHER = 'cipher_list
'
Cambia los parámetros que usa el servidor esclavo para conectar y comunicar con el servidor maestro.
MASTER_USER
,
MASTER_PASSWORD
,
MASTER_SSL
,
MASTER_SSL_CA
,
MASTER_SSL_CAPATH
,
MASTER_SSL_CERT
, y
MASTER_SSL_CIPHER
proporciona información
para el esclavo acerca de cómo conectar con su maestro.
Las opciones SSL (MASTER_SSL
,
MASTER_SSL_CA
,
MASTER_SSL_CAPATH
,
MASTER_SSL_CERT
,
MASTER_SSL_KEY
, y
MASTER_SSL_CIPHER
) pueden cambiarse incluso
en esclavos que se compilan sin soporte SSL. Se guardan en el
fichero master.info
, pero se ignorarn
hasta que use un servidor que tenga soporte SSL activado.
Si no especifica un parámetro dado, mantiene su valor antiguo, excepto cuando se indica en la siguiente discusión. Por ejemplo, si la contraseña para conectar a su maestro MySQL ha cambiado, necesita ejecutar este comando para decir al esclavo la nueva contraseña:
mysql> STOP SLAVE; -- if replication was running mysql> CHANGE MASTER TO MASTER_PASSWORD='new3cret'; mysql> START SLAVE; -- if you want to restart replication
Aquí no hay necesidad de especificar los parámetros que no cambian (equipo, puerto, usuario, y así).
MASTER_HOST
y
MASTER_PORT
son el nombre de equipo (o
dirección IP) del equipo maestro y su puerto TCP/IP. Tenga en
cuenta que si MASTER_HOST
es igual a
localhost
, entonces, como en otras partes
de MySQL, el puerto puede ignorarse (si los ficheros socket
Unix pueden usarse, por ejemplo).
Si especifica MASTER_HOST
o
MASTER_PORT
, el esclavo asume que el
servidor maestro es distinto que antes (incluso si especifica
un valor de equipo o de puerto igual que el anterior.) En este
caso, los antiguos valores para el log binario del servidor
maestro y su posición no se consideran aplicables por más
tiempo, así que si no especifica
MASTER_LOG_FILE
y
MASTER_LOG_POS
en el comando
MASTER_LOG_FILE=''
y
MASTER_LOG_POS=4
se añaden al final.
MASTER_LOG_FILE
y
MASTER_LOG_POS
son las coordinadas en que
flujo esclavo de entradea/salida debe empezar a leer del
maestro la siguiente vez que el flujo arranque. Si especifica
alguna de ellas, no puede especificar
RELAY_LOG_FILE
o
RELAY_LOG_POS
. Si no se especifica
MASTER_LOG_FILE
ni
MASTER_LOG_POS
, el esclavo usa las
últimas coordenadas del flujo SQL del esclavo
antes de realizar CHANGE
MASTER
. Esto asegura que no hay discontinuidad en la
replicación, incluso si el flujo SQL esclavo se comparó
posteriormente con el flujo esclavo de entrada/salida, cuando
símplemente quiere cambiar, digamos, la contraseña a usar.
CHANGE MASTER
borra todos los
ficheros de log retardados y arranca uno nuevo, a
no ser que especifique RELAY_LOG_FILE
o
RELAY_LOG_POS
. En tal caso, los logs
retardados se guardan; en MySQL 5.0, la variable global
relay_log_purge
se pone a 0.
CHANGE MASTER TO
actualiza los contenidos
de los ficheros master.info
y
relay-log.info
.
CHANGE MASTER
es útil para inicializar un
esclavo cuando tiene una imagen del maestro y ha guardado el
log y el desplazamiento correspondientes a la misma. Tras
cargar la imagen en el esclavo, puede ejecutar CHANGE
MASTER TO
MASTER_LOG_FILE='
log_name_on_master
',
MASTER_LOG_POS=log_offset_on_master
en el esclavo.
Ejemplos:
mysql> CHANGE MASTER TO -> MASTER_HOST='master2.mycompany.com', -> MASTER_USER='replication', -> MASTER_PASSWORD='bigs3cret', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='master2-bin.001', -> MASTER_LOG_POS=4, -> MASTER_CONNECT_RETRY=10; mysql> CHANGE MASTER TO -> RELAY_LOG_FILE='slave-relay-bin.006', -> RELAY_LOG_POS=4025;
El primer ejemplo cambia el maestro y las coordenadas del log binario del maestro. Esto se usa cuando quiere preparar el esclavo para replicar el maestro.
El segundo ejemplo muestra una operación que se emplea menos
frecuentemente. Si se usa cuando el esclavo tiene logs
retardados que quiere ejecutar de nuevo por alguna razón.
Para ello, el maestro no necesita ser accesible. Sólo
necesita usar CHANGE MASTER TO
y arrancar
el flujo SQL (START SLAVE SQL_THREAD
).
Incluso puede usar la segunda operación en una configuración
de no replicación con un servidor aislado, no esclavo, para
recuperación de fallos posteriores. Suponga que su servidor
ha fallado y ha restaurado una copia de seguridad. Quiere
volver a ejecutar los logs binarios del servidor (no los logs
retardados, sino los logs binarios regulares), llamados (por
ejemplo) myhost-bin.*
. En primer lugar,
haga una copia de seguridad de los logs binarios en un sitio
seguro, en caso que no siga exactamente el procedimiento
posterior y accidentalmente haga que el servidor purgue los
logs binarios. En MySQL 5.0, use SET GLOBAL
relay_log_purge=0
para seguridad adicional. Cuando
arranca el servidor sin la opción
--log-bin
, En su lugar, use las opciones
--replicate-same-server-id
,
--relay-log=myhost-bin
(para que el
servidor crea que los logs binarios regulares son los logs
retardados), --skip-slave-start
. Cuando el
servidor arranca, ejecute estos comandos:
mysql> CHANGE MASTER TO -> RELAY_LOG_FILE='myhost-bin.153', -> RELAY_LOG_POS=410, -> MASTER_HOST='some_dummy_string'; mysql> START SLAVE SQL_THREAD;
El servidor lee y ejecuta sus propios logs binarios,
permitiendo recuperación de fallos. Una vez que finaliza la
recuperación, ejecute STOP SLAVE
, pare el
servidor, borre master.info
y
relay-log.info
, y reinicie el servidor
con sus opciones originales.
Actualmente, especificar MASTER_HOST
(incluso con un valor de prueba) se necesita para hacer que el
servidor piense que es un esclavo. En el futuro, planeamos
añadir opciones para evitar estas restricciones menores.
LOAD DATA FROM MASTER
Este comando toma una muesta del maestro y la copia en el
esclavo. Actualiza los valores de
MASTER_LOG_FILE
y
MASTER_LOG_POS
para que el esclavo comience
la replicación desde la posición correcta. Cualquier regla
de exclusión de tabla y base de datos especificada con las
opciones --replicate-*-do-*
y
--replicate-*-ignore-*
se tienen en cuenta.
--replicate-rewrite-db
no se tienen en cuenta. Esto es porque un
usuario puede, con esta opción, configurar un mapeo no único
tal como --replicate-rewrite-db=db1->db3
y --replicate-rewrite-db=db2->db3
, que
puede confundir al esclavo al cargar tablas del maestro.
El uso de este comando está sujeto a las siguientes condiciones:
-
Esto sólo funciona con tablas
MyISAM
. Intentos de cargar de una tabla noMyISAM
provoca el siguiente error:ERROR 1189 (08S01): Net error reading from master
-
Adquiere un bloqueo de lectura global del maestro al tomar la muesta, que evita actualizaciones en el maestro durante la operación de carga.
En el futuro, planeamos hacer este comando compatible con
tablas InnoDB
y eliminar la necesidad de
bloqueo de lectura global usando una copia de seguridad no
bloqueante en línea.
Si está cargando tablas grandes, puede tener que incrementar
los valores de net_read_timeout
y
net_write_timeout
en los servidores
esclavos y maestros. Consulte
Sección 5.3.3, “Variables de sistema del servidor”.
Tenga en cuenta que LOAD DATA FROM MASTER
no copia ninguna tabla de la base de
datos mysql
. Esto hace fácil tener
distintos usuarios y permisos en el maestro y el esclavo.
El comando LOAD DATA FROM MASTER
necesita
la cuenta de replicación que se usa para conectar con el
maesto para tener los permisos RELOAD
y
SUPER
en el maestro y el permiso
SELECT
para todas las tablas maestras que
quiera cargar. Todas las tablas del maestro para las que el
usuario no tiene el permiso SELECT
se
ignoran por LOAD DATA FROM MASTER
. Esto es
porque el maestro las oculta del usuario: LOAD DATA
FROM MASTER
llama SHOW DATABASES
para conocer las bases de datos a cargar por parte del
maestro, pero SHOW DATABASES
retorna sólo
bases de datos para las que el usuario tenga algunos permisos.
Consulte Sección 13.5.4.6, “Sintaxis de SHOW DATABASES
”. En la parte del
esclavo, el usuario que ejecuta LOAD DATA FROM
MASTER
debe tener permisos para crear y borrar bases
de datos y tablas que se copien.
LOAD TABLE tbl_name
FROM MASTER
Transfiere una copia de la tabla desde el maestro al esclavo.
Este comando se implementa principalmente para depurar
LOAD DATA FROM MASTER
. Requiere que la
cuenta usada para conectar con el servidor maestro tenga los
permisos RELOAD
y SUPER
en el maestro y el permiso SELECT
en la
tabla maestra a cargar. En la parte del esclavo, el usuario
que ejecuta LOAD TABLE FROM MASTER
debe
tener permisos para borrar y crear la tabla.
Las condiciones para LOAD DATA FROM MASTER
se aplican aquí. Por ejemplo, LOAD TABLE FROM
MASTER
funciona sólo en tablas
MyISAM
. También se aplican las notas sobre
timeouts para LOAD DATA FROM MASTER
.
SELECT MASTER_POS_WAIT('master_log_file
',master_log_pos
)
Esto es una función, no un comando. Se usa para asegurar que el esclavo ha leído y ejecutado eventos hasta la posición dada en el log binario del maestro. Consulte Sección 12.9.4, “Funciones varias” para una descripción completa.
RESET SLAVE
Hace que el esclavo olvide su posición de replicación en el
log binario del maestro. Este comando se debe usar para un
inicio limpio: borra los ficheros
master.info
y
relay-log.info
, todos los logs
retardados, y arranca un nuevo log retardado.
Nota: Todos los logs
retardados se borran, incluso si no se han ejecutado
completamente por parte del flujo SQL esclavo . (Esta es una
condición que es probable que exista en un esclavo de
replicación si ha ejecutado un comando STOP
SLAVE
o si el esclavo está muy cargado.)
La información de conexión almacenada en el fichero
master.info
se resetea inmediatamente
usando cualquier valor especificado en las opciones de
arranque correspondientes. Esta información incluye valores
tales como el equipo maestro, puerto, usuario y contraseña
del maestro. Si el flujo SQL esclavo está en medio de una
operación de replicar tablas temporales cuando se paró, y se
ejecuta RESET SLAVE
, estas tablas
temporales replicadas se borran en el esclavo.
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n
Ignora los siguientes n
eventos del
maestro. Esto es útil para recuperarse de paradas de
replicación provocadas por un comando.
Este comando es válido sólo cuando el flujo esclavo no está en ejecución. De otro modo, produce un error.
SHOW SLAVE STATUS
Proporciona información de estado de parámetros esenciales
de los flujos esclavos. Si ejecuta este comando usando el
cliente mysql puede usar un terminador de
comando \G
en lugar de punto y coma para
obtener una salida vertical más legible:
mysql> SHOW SLAVE STATUS\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: localhost Master_User: root Master_Port: 3306 Connect_Retry: 3 Master_Log_File: gbichot-bin.005 Read_Master_Log_Pos: 79 Relay_Log_File: gbichot-relay-bin.005 Relay_Log_Pos: 548 Relay_Master_Log_File: gbichot-bin.005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 79 Relay_Log_Space: 552 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: 8
SHOW SLAVE STATUS
retorna los siguientes
campos:
-
Slave_IO_State
Una copia del campo
State
se la salida deSHOW PROCESSLIST
para el flujo esclavo de entrada/salida. Le dice si el flujo está tratando de conectar con el maestro, esperando eventos del maestro, reconectando con el maestro, etc. Los estados posibles se listan en Sección 6.3, “Detalles de la implementación de la replicación”. Consultar este campo es necesario porque, por ejemplo, el flujo puede estar en ejecución pero intentando conectar con el maestro sin éxito; sólo este campo le muestra el problema de conexión. El estado del flujo SQL no se copia porque es más simple. Si está en ejecución, no hay problema; si no es así, puede encontrar el error en el campoLast_Error
(descrito posteriormente). -
Master_Host
Equipo maestro actual
-
Master_User
Usuario actual usado para conectar con el maestro.
-
Master_Port
Puerto maestro actual.
-
Connect_Retry
Valor actual de la opción
--master-connect-retry
. -
Master_Log_File
Nombre del fichero de log binario desde el que está leyendo actualmente el flujo de entrada/salida.
-
Read_Master_Log_Pos
La posición hasta la que el flujo de entrada/salida ha leído en el log binario del maestro.
-
Relay_Log_File
Nombre del fichero de log retardado desde el que el flujo SQL está leyendo y ejecutando actualmente.
-
Relay_Log_Pos
La posición hasta la que el flujo SQL ha leído y ejecutado en el flujo en el log retardado actual.
-
Relay_Master_Log_File
Nombre del log binario maestro que contiene la mayoría de los eventos recientes ejecutados por el flujo SQL.
-
Slave_IO_Running
Si el flujo de entrada/salida está activo.
-
Slave_SQL_Running
Si el flujo SQL está activo.
-
Replicate_Do_DB, Replicate_Ignore_DB
La lista de bases de datos especificadas con las opciones
--replicate-do-db
y--replicate-ignore-db
, si se dió alguna. -
Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table, Replicate_Wild_Ignore_Table
Lista de tablas especificadas con las opciones
--replicate-do-table
,--replicate-ignore-table
,--replicate-wild-do-table
, y--replicate-wild-ignore_table
, si se dió alguna. -
Last_Errno, Last_Error
Número y mensaje de error retornados por la última consulta ejecutada. Un número de error 0 y mensaje vacío significa “no error.” Si el valor
Last_Error
no está vacío, también aparece como mensaje en el log de errores del esclavo.Por ejemplo:
Last_Errno: 1051 Last_Error: error 'Unknown table 'z'' on query 'drop table z'
El mensaje indica que la tabla
z
existió en el maestro y se borró allí, pero no existió en el esclavo, así queDROP TABLE
falló en el esclavo. (Esto puede ocurrir, por ejemplo, si olvidó copiar la tabla en el esclavo al configurar la replicación.) -
Skip_Counter
El último valor usado para
SQL_SLAVE_SKIP_COUNTER
. -
Exec_Master_Log_Pos
La posición del último evento ejecutado por el flujo SQL del log binario del maestro (
Relay_Master_Log_File
). (Relay_Master_Log_File
,Exec_Master_Log_Pos
) en el log binario del maestro correspondiente a (Relay_Log_File
,Relay_Log_Pos
) en el log retardado. -
Relay_Log_Space
Tamaño total combinado de todos los logs retardados existentes.
-
Until_Condition, Until_Log_File, Until_Log_Pos
Valores especificados en la cláusula
UNTIL
del comandoSTART SLAVE
.Until_Condition
tiene estos valores:-
None
si no se especificóUNTIL
-
Master
si el esclavo está leyendo hasta una posición dada en el log binario del maestro -
Relay
si el esclavo está leyendo hasta una posición dada en su log retardado
Until_Log_File
yUntil_Log_Pos
indica los valors del nombre de fichero y posición que definen el punto en que el flujo SQL para su ejecución. -
-
Master_SSL_Allowed, Master_SSL_CA_File, Master_SSL_CA_Path, Master_SSL_Cert, Master_SSL_Cipher, Master_SSL_Key
Estos campos muestran los parámetros SSL usados por el esclavo para conectar con el maestro, si hay algo.
Master_SSL_Allowed
tiene estos valores:-
Yes
si se permite conexión SSL con el maestro -
No
si no se permite una conexión SSL con el maestro -
Ignored
se se permite una conexión SSL pero el servidor esclavo no tiene soporte SSL activdo
Los valores de los otros campos relacionados con SSL se corresponden con los valores de las opciones
--master-ca
,--master-capath
,--master-cert
,--master-cipher
, y--master-key
. -
-
Seconds_Behind_Master
Este campo indica el “retardo” del esclavo. Cuando el flujo SQL esclavo está en ejecución (procesando actualizaciones), este campo es el número de segundos que han pasado desde el momento del evento más reciente del maestro ejecutado por este flujo. Cuando ese flujo lo atrapa el flujo de entrada/salida esclavo y pasa a espera de más eventos del flujo de entrada/salida este campo es cero. En resumen, este campo mide en segundos la diferencia temporal entre el flujo SQL esclavo y el flujo de entrada/salida esclavo.
Si la conexión de red entre maestro y esclavo es rápida, el flujo de entrada/salida esclavo es muy cercano al maestro, así que este campo es una buena aproximación de cuanto tarda el flujo SQL esclavo en compararse con el maestro. Si la red es lenta, esta no es una buena aproximación, el flujo SQL esclavo puede verse atrapado a menudo por un flujo de entrada/salida esclavo lento , así que
Seconds_Behind_Master
a menudo muestra un valor de 0, incluso si el flujo de entrada/salida se compara posteriormente con el maestro. En otras palabras, esta columna es útil sólo para redes rápidas.Esta computación de diferencia temporal funciona incluso si el esclavo y maestro no tienen relojes idénticos ( la diferencia de tiempo se computa cuando el flujo de entrada/ salida del esclavo arranca, y se asume como que permance constante desde ese momento).
Seconds_Behind_Master
esNULL
(que significa “desconocido”) si el flujo SQL esclavo no está en ejecución, o si el flujo de entrada/salida esclavo no está en ejecución o no conectado con el maestro. Por ejemplo si el flujo de entrada/salida esclavo está durmiendo durantemaster-connect-retry
segundos antes de reconectar,NULL
se muestra, ya que el esclavo no puede saber lo que hace el maestro, y así no puede asegurar el retardo.Este campo tiene una limitación. El timestamp se preserva a través de la replicación, lo que significa que, si un maestr M1 es un esclavo de M0, cualquier evento desde el log binario de M1 que se origine al replicar un evento del log binario M0 tiene el timestamp del evento. Esto permite a MySQL replicar
TIMESTAMP
con éxito. Sin embargo, la desventaja paraSeconds_Behind_Master
es que si M1 también recibe actualizaciones directas de los clientes, el valor se desvía aleatoriamente, ya que a veces el último evento de M1 es de M0 y otras de actualización directa, y por lo tanto es el timestampo más reciente.
START SLAVE [thread_type
[,thread_type
] ... ] START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = 'log_name
', MASTER_LOG_POS =log_pos
START SLAVE [SQL_THREAD] UNTIL RELAY_LOG_FILE = 'log_name
', RELAY_LOG_POS =log_pos
thread_type: IO_THREAD | SQL_THREAD
START SLAVE
sin opciones arranca los flujos
esclavos. El flujo de entrada/salida lee consultas del
servidor maestro y las almacena en el log retardado. El flujo
SQL lee el log retardado y ejecuta las consultas.
START SLAVE
require el permiso
SUPER
.
Si START SLAVE
tiene éxito al arrancar los
flujos esclavos, retorna sin ningún error. Sin emgargo,
incluso en tal caso, puede ser que el flujo esclavo arranqu y
luego pare (por ejemplo, porque no puede conectar con el
maestro o leer sus logs binarios, o algún otro problema).
START SLAVE
no le advierte acerca de esto.
Debe chequear el log de errores esclavo para mensajes de error
generados por los flujos esclavos, o chequear que estén
ejecutándos correctamente con SHOW SLAVE
STATUS
.
En MySQL 5.0, puede añadir las opciones
IO_THREAD
y SQL_THREAD
al comando para decir qué flujo arrancar.
Una cláusula UNTIL
puede añadirse para
especificar que el esclavo debe arrancar y ejecutar hasta que
el flujo SQL llegue a un punto dado en los logs binarios del
maestro o en los logs retardados del esclavo. Cuando el flujo
SQL llega a ese punto, para. Si la opción
SQL_THREAD
se especifica en el comando,
arranca sólo el flujo SQL. De otro modo, arranca ambos flujos
esclavos. Si el flujo SQL está en ejecución, la cláusula
UNTIL
se ignora y se muestra una
advertencia.
Para una cláusula UNTIL
, debe especificar
nombre de fichero de log y posición. No mezcle opciones de
maestro y log retardado.
Cualquier condición UNTIL
se resetea
mediante un comando STOP SLAVE
, un comando
START SLAVE
que no incluya cláusula
UNTIL
, o reinicio de servidor.
La cláusula UNTIL
puede ser útil para
depurar replicación, o para que la replicación proceda justo
antes del punto en que quiera evitar tener un esclavo
replicando un comando. Por ejemplo, si se ejecuta un comando
DROP TABLE
no deseado, puede usar
UNTIL
para decir al esclavo que ejecute
hasta ese punto pero no más. Para encontrar el evento, use
mysqlbinlog con los logs maestros o los
logs retardados del esclavo, o usando un comando SHOW
BINLOG EVENTS
.
Si está usando UNTIL
para tener las
consultas replicadas por el proceso esclavo en secciones, se
recomienda que arranque el esclavo con la opción
--skip-slave-start
para evitar que el flujo
SQL se ejecute cuando arranque el servidor. Es probablemente
mejor usar esta opción con un fichero de opciones en lugar
que en la línea de comandos, así que un reinicio inesperado
del servidor no hace que se olvide.
El comando SHOW SLAVE STATUS
incluye campos
de salida que muestran los valores actuales de la condición
UNTIL
.
En versiones prévias de MySQL, este comando se llamó
SLAVE START
cuyo uso todavía se acepta en
MySQL 5.0 por compatibilidad con versiones anteriores, pero
ahora está obsoleto.
STOP SLAVE [thread_type
[,thread_type
] ... ] thread_type: IO_THREAD | SQL_THREAD
Para el flujo esclavo. STOP SLAVE
necesita
el permiso SUPER
.
Como START SLAVE
, este comando puede usarse
con las opciones IO_THREAD
y
SQL_THREAD
para nombrar el flujo o flujos a
parar.
En versiones prévias de MySQL, este comando se llamó
SLAVE STOP
. Su uso se acepta en MySQL 5.0
por compatibilidad con versiones anteriores, pero ahora está
obsoleto.