Let us assume a master database gets corrupt.
Use the backup of the master database, do ibbackup
--apply-log yourbackupmy.cnf and put the
ibdata and ib_logfile
files to the right places. Then put the
.frm files to the right place. Let us
assume you have a tar file of the .frm
files: cd mysqldatadir; tar xvf
yourtarfile
Edit the master my.cnf file so that you
comment out log-bin in it so that the
slaves do not receive twice the binlog needed to recover the
master.
Replication in the slaves must be stopped temporarily when you do the piping of the binlog to the master. In the slaves, do
mysql> STOP SLAVE;
Start the master mysqld on the restored
backup:
$ mysqld … InnoDB: Doing recovery: scanned up to log sequence number 0 64300044 InnoDB: Last MySQL binlog file position 05585832, file name ./omnibook-bin.002…
InnoDB printed the binlog file and position it was able to recover to.
Next you should pipe the remaining binlog files to the restored backup:
$ mysqlbinlog --start-position=5585832mysqldatadir/omnibook-bin.002| mysql $ mysqlbinlog /mysqldatadir/omnibook-bin.003 | mysql
The master database is now recovered. Shut down the master
and edit my.cnf to uncomment
log-bin.
Start the master again.
Start replication in the slaves again:
mysql> START SLAVE;

User Comments
Add your own comment.