Recuperar MySQL sin LOGs

Improvisa :: Informática :: Recuperar MySql sin LogsOs cuento y dejo esta autonota, sobre como recuperar MySQL sin tener los logs, por si a alguien le ocurre el mismo problema. El disco duro de mi centralita, asterisk por supuesto, se ha roto, pero bien roto. Suerte que mis copias de seguridad las hago diariamente y del sistema completo, de esta forma en, supuestamente, pocos minutos recupero el sistema al 100 %. Digo supuestamente pocos minutos porque me ha surgido un problemilla con los logs de MySQL. Con todo lo demás ha ido de lujo, queda prometido en esta post un manualillo contandoos como hago las copias de seguridad.­

Mi copia de seguridad excluía el directorio de logs, /var/log/ en debian , porque tuve problemas con el log de asterisk, me llegaba a ocupar mas de 20 gb el /var/log/asterisk/full y por supuesto que no quería copiarlos, pero torpe de mi, en mi rsync exluí el directorio completo /var/log/ en vez de /var/log/asterisk, pensando que no ocurría nada en la restauración del sistema. Pues bueno si que ocurre, MySQL no es capaz de arrancar sin su directorio en /var/log, es más no es que necesitemos crearlo sino que necesitamos tener los archivos originales y unicos para cada instalación de MySQL.

Dentro del directorio /var/log/mysql/ existen unos archivos .bin, en mi caso mysql-bin.000386 hasta mysql-bin.000397, necesarios para que recuperemos MySQL si ocurre algun desastre, como no los tenemos ya que mi /var/log/mysql ha desaparecido, MySQL no es capaz de iniciar su servicio si no tiene estos logs, dicho de otra forma para que Google lo pille, MySQL no arranca sin el log.

La forma de solucionarlo es la siguiente:

Bueno pues la forma es bien fácil, una vez sabida por supuesto, debemos editar el archivo /etc/mysql/my.cnf

operadora:/# vi /etc/mysql/my.cnf

Buscad el apartado Logging and Replication y comentad las lineas

log_bin                  = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size         = 100M

Para que quede así:

# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log            = /var/log/mysql/mysql.log
#
# Error logging goes to syslog. This is a Debian improvement 🙂
#
# Here you can see queries with especially long duration
#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
#server-id              = 1
#log_bin                  = /var/log/mysql/mysql-bin.log
# WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
#expire_logs_days = 10
#max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name

Ahora debemos pasar mysqlchek por si alguna de las bases de datos se ha quedado corrupta:

operadora:/# mysqlcheck -A -u root -p
Enter password:
asterisk.Backup                                    OK
asterisk.admin                                     OK
asterisk.ampusers                                  OK
asterisk.announcement                              OK
asterisk.callback                                  OK
asterisk.cidlookup                                 OK
asterisk.cidlookup_incoming                        OK
asterisk.customerdb                                OK
asterisk.devices                                   OK
asterisk.disa                                      OK
asterisk.extensions                                OK
asterisk.featurecodes                              OK
asterisk.findmefollow                              OK
asterisk.freepbx_log                               OK
……………
……………

La solución no es óptima ya que perdemos una funcionalidad que el día de mañana puede sernos útil, pero que yo ya he resuelto creando dumps diarios de la BBDD.