Pregunta

He configurar la replicación para el servidor MySQL. Puedo conectar desde la máquina de esclavos en el servidor maestro utilizando el usuario de replicación / contraseña. He conseguido el hilo conductor SQL esclavo, pero el de E / S flujo esclavo no es correr y el esclavo I / O viene estado tan vacía cuando se verifica utilizando 'mostrar el título de satélite'. ¿Cuál podría ser el problema?

¿Cómo puedo solucionar esto? Al reiniciar el esclavo no ayuda.

Esta fue mi mala:. En lugar de dar un privilegio 'esclavo de replicación' a *.*, sólo estaba dando por my_db.*

¿Fue útil?

Solución

  

En lugar de dar una 'réplica   privilegio de esclavos' a., yo sólo era   dándole para my_db. *.

esclavo de replicación sólo es un privilegio global (es decir, por usuario solamente), esto significa que un comando como

GRANT REPLICATION SLAVE on mydb.* TO 'someuser'@'%';

no tiene ningún efecto ya que no puede concederle por base de datos / columna / mesa.

El comando tiene que ejecutar es:

GRANT REPLICATION SLAVE on *.* TO 'someuser'@'%';

A continuación, realice una START SLAVE. También puede resultar útil para buscar en el registro de errores de MySQL.

Me gustaría sugerir una buena lectura de la configuración de replicación documentación , ya que explica todo esto en detalle.

Otros consejos

Me enfrenté mismo tema y fijo que utilizan los pasos siguientes. enlace completo hilo es http://www.percona.com/forums/questions-discussions/percona-xtrabackup/11842-backup-stopped-working-slave-sql-running-no

Pasos son los mismos como se ha mencionado por @ Luxknight007 excepto su paso 2. Sin embargo este hilo contiene más detalle que es muy útil. A continuación se presenta una solución que he usado y funcionó.

"La primera cuestión es que ha cambiado la posición de la replicación en lugar de arreglar el error, y utilizó un formato de nombre de archivo binlog incorrecta (es probable que acaba de utilizar la de ese puesto se enlazó supongo). Para volver a punto de partida, es necesario encontrar el archivo log binario y la posición que el SQL_THREAD esclavo se detuvo en. en base a su salida de estado esclavo, parece que el esclavo es la lectura de un nuevo archivo de log binario (se puede ver que el valor Read_Master_Log_Pos es menor que el valor Exec_Master_Log_Pos, lo que significa que tiene que estar leyendo un archivo log binario más reciente que cuando el SQL_THREAD esclavo se detuvo en), por lo que necesita para encontrar el archivo binlog que el SQL_THREAD esclavo en realidad no sucesivamente. así que busque en el registro de errores para algo así como el a continuación:

Código:

2013-10-08 12:48:51 37545 [ERROR] Slave SQL: Error 'Table 'testdb.test2' doesn't exist' on query. Default database: 'testdb'. Query: 'insert into test1 select * from test2', Error_code: 1146
2013-10-08 12:48:51 37545 [Warning] Slave: Table 'testdb.test2' doesn't exist Error_code: 1146
2013-10-08 12:48:51 37545 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000001' position 3427

Esta es una muestra que re-creado, por lo que el suyo será un poco diferente. Tenga en cuenta que el error es similar a lo que se ve en su condición de esclavo. Así que encontrar su mensaje de error específico en el archivo de registro de errores, a continuación, busque la parte final, donde se le da el nombre de archivo y la posición ( "Paramos en registro 'mysql-bin.000001' posición 3427" en mi ejemplo). La posición debe ser 315098143 basado en su estado de esclavos espectáculo, ya que es cuando el esclavo SQL_THREAD detuvo la ejecución de eventos (Exec_Master_Log_Pos) pero el IO_THREAD siguió leyendo en unas nuevas (Read_Master_Log_Pos).

Una vez que encuentre el nombre del archivo y la posición correcta binlog, vuelva a ejecutar su estado de maestro de modificación en su esclavo utilizando la información de buscar en el registro de errores. Tenga en cuenta que el nombre del archivo debe ser algo como "newcrmdb1-bin.XXXXXX", no MySQL-bin.XXXXXX (se puede ver esta convención de su show el título de satélite arriba).

Código:

mysql> change master to MASTER_LOG_FILE='newcrmdb1-bin.XXXXXX', Master_Log_Pos=315098143;

change master to MASTER_LOG_FILE='mysql-bin.000082' , Master_Log_Pos=47914844;

Una vez que se señaló de nuevo a la ubicación original de replicación en el que el esclavo no SQL_THREAD, es necesario entonces corregir el error que se quejaba de que empezar.

El error aparece replicación inicial a estar diciendo que el asteriskcdr.bpleadcf tabla no existe en el esclavo, por lo que la instrucción de inserción está fallando cuando se trata de seleccionar los datos de esa tabla. Así que el problema no es que su esclavo parece estar ya fuera de sincronía con su maestro. Si la tabla en cuestión en el maestro es estática o casi estática, se puede resolver este probable mediante la exportación de los datos de sólo esa tabla en el maestro usando mysqldump y cargarla en el esclavo. Si eso no es posible, o que no se preocupan por que los datos, siempre se puede simplemente omitir la declaración de réplica con sql_slave_skip_counter, pero entonces el esclavo sería aún más fuera de sincronía con el maestro.

Y si todo lo demás falla, siempre se puede reconstruir el esclavo desde el maestro como último recurso también. =) "

Me he encontrado con el mismo problema y de que este intento pasos

En primer lugar añadir este código en algún lugar por debajo de [mysqld] de my.cnf o my.ini slave-skip-errors=1046 esto evitará toda entrada duplicada ya que vamos a ejecutar todo el archivo de registro binario, donde la parada de la replicación, es posible comentar el código después de la replicación exitosa.

1.Stop SLAVE;

2.RESET SLAVE;

Master 3.Cambie A MASTER_LOG_FILE = 'mysql-bin.000049';

Note: MASTER_LOG_FILE must be the last file where it stop from replicating

4.Cambie MAESTRO A MASTER_LOG_POS = 98;

5.Start SLAVE;

comprobar si tienen éxito

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top