Activación y manejo Binary Logs Mysql

Una configuración sencilla para activar los binary logs en Mysql sería la siguiente que añadiremos al archivo my.cnf y reiniciaremos el servicio de MySQL

Configuración sencilla para activar los binary logs en Mysql

# Binary logs

log-bin=/var/mysql/binlogs/xxxxxxxxx_log.bin
log-bin-index=/var/mysql/binlogs/xxxxxxxxx_index.bin
max_binlog_size=100M
binlog-format=MIXED
expire_logs_days        = 7  # tiempo de vida de los bin-log

 

Una vez los hemos activado vamos a comprobar si todo esta correcto y como podemos trabajar con ellos.

 

Para comprobar el estado

mysql> show master status;

+————————–+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+————————–+———-+————–+——————+
| xxxxxxxxxxxxx_log.000023 | 106 | | |
+————————–+———-+————–+——————+
1 row in set (0.00 sec)

 

Saber los Binary logs actuales

mysql> show binary logs;
+————————–+———–+
| Log_name | File_size |
+————————–+———–+
| xxxxxxxxxxxxx_log.000022 | 157 |
| xxxxxxxxxxxxx_log.000023 | 106 |
+————————–+———–+
2 rows in set (0.00 sec)

 

Ver contenido de un binlog

#mysqlbinlog tsbsi2mysql06_log.000022

 

Pasar un bin-log a formato sql o txt

#mysqlbinlog xxxxxxxxxxxxx_log.000022 > xxxxxxxxxxxxx_log.000022.txt
o
#mysqlbinlog xxxxxxxxxxxxx_log.000022 > xxxxxxxxxxxxx6_log.000022.sql

 

Ver desde los bin-log solo de una BBDD

#mysqlbinlog –database=test xxxxxxxxxxxxx_log.000022

 

Restaurar un bin-log

#mysqlbinlog xxxxxxxxxxxxx_log.000001 | mysql -u root -p

 

Restaurar todos los bin- log

#mysqlbinlog xxxxxxxxxxxxx_log.[0-9]* | mysql -u root -p

 

Restaurar pero viendo antes el contenido de los bin-logs o editándolos

#mysqlbinlog xxxxxxxxxxxxx_log.[0-9]* > temporalfile.sql
#mysql -u root -p < temporalfile.sql

 

Restaurar elementos solamente de una BBDD.

      #mysqlbinlog –database=test  xxxxxxxxxxxxx_log.000022 | mysql -uroot -p

Nunca hacerlo en secuencias separadas

EJ #> mysqlbinlog xxxxxxxxxxxxx_log.000022 | mysql -u root -p # No hacer esto no recomendable!!
#> mysqlbinlog xxxxxxxxxxxxx_log.000023 | mysql -u root -p # No hacer esto no recomendable!!

Es recomendable agruparlos todos en una misma secuencia

#> mysqlbinlog xxxxxxxxxxxxx_log.000022 xxxxxxxxxxxxx_log.000023 | mysql -u root -p # Hacerlo así recomendable

o pasarlos todos a un temporalfile y luego realizar la carga.

# mysqlbinlog xxxxxxxxxxxxx_log.000022 > /tmp/temporalfile.sql
# mysqlbinlog xxxxxxxxxxxxx_log.000023 >> /tmp/temporalfile.sql
# mysql -u root -p -e “source /tmp/temporalfile.sql”

Dejar una contestacion