systemadmin.es > DBA > analyze y optimize en MySQL slaves

analyze y optimize en MySQL slaves

En un MySQL con replicación, todo lo que acaba en el binlog se consideran modificaciones que se traspasan a los slaves para que sean modificados igual que el master.

En el caso de los analyze y optimize, no se ve tan claro como un UPDATE:

  • analyze: Actualiza la información que utiliza el optimizador sobre la distribución de las filas en la tabla
  • optimize: Elimina el espacio que ya no se usa: Cuando un dato es eliminado es marcado como eliminado en lugar de eliminar-se, con este comando recreamos la tabla eliminando el espacio no utilizado

Estos comandos acaban en el binlog, por lo que no hace falta tener estas tareas programadas en los slaves. Mediante el comando mysqlbinlog lo podemos ver:

$ mysqlbinlog mysql-bin.000001 
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#120426  9:55:16 server id 1  end_log_pos 106 	Start: binlog v 4, server v 5.1.30-debug-log created 120426  9:55:16 at startup
# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.
ROLLBACK/*!*/;
# at 106
#120426  9:55:50 server id 1  end_log_pos 189 	Query	thread_id=1	exec_time=0	error_code=0
SET TIMESTAMP=1335426950/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
create database test
/*!*/;
# at 189
#120426  9:56:04 server id 1  end_log_pos 277 	Query	thread_id=1	exec_time=0	error_code=0
use test/*!*/;
SET TIMESTAMP=1335426964/*!*/;
create table test(id int)
/*!*/;
# at 277
#120426  9:56:07 server id 1  end_log_pos 358 	Query	thread_id=1	exec_time=0	error_code=0
SET TIMESTAMP=1335426967/*!*/;
analyze table test
/*!*/;
# at 358
#120426  9:56:14 server id 1  end_log_pos 440 	Query	thread_id=1	exec_time=0	error_code=0
SET TIMESTAMP=1335426974/*!*/;
optimize table test
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

Relacionados

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>