分享

mysql从库被修改的恢复

 jas0n_liu 2012-09-03
        这几天心里很乱,庆幸的是没影响到工作,但是不幸的事今天下午发生了,在给两个数据表添加字段时直接操作了从库。悲剧了....
mysql主从分离,主写从读,两张表table1、table2 新添字段column,当时两条SQL语句:
alter table tabel1 add column int(5)  default 0 not null auto_increment;
alter table tabel2 add column int(5)  default 0 not null auto_increment;
执行第一条没有问题,大概有五百多条被修改,执行第二条报错:此字段column已存在。执行到此才发现是在从库上的操作,当时的想法是drop掉table1的column字段:alter table table1 drop column column,但是由于误操作将table2的column字段drop掉了。悲催.....
接下来只能删除table1的column,添加table2的column,接着重启主从,报错。
以下为恢复过程:
1、利用DNS将查询业务切换到主库,停掉从库的同步:stop   slave;
2、删除tabel1的column字段:alter table table1 drop column column;由于此表没有写入所以数据跟主库一致,table1恢复完成。
难点在于表table2的恢复
3、在主库备份table2:mysqldump -uroot -p database table2 > table2.sql
4、在从库上删除表table2:truncate table2;
5、将table2.sql导入从库:mysql -uroot -p database < table2.sql
6、set global sql_slave_skip_counter=1 跳过报错,重启主从:start slave
此时主从同步恢复正常,校验主从数据库的完整性,此案例成功的关键在于操作期间,数据表的数据没有变化,所以保证的主从数据库的数据一致,重启主从才能重新同步。
如果表的写入操作过于频繁则无法使用上述方法来恢复,不过,可以考虑锁表后再来进行操作。这个具有理论上的可行性,未经实验验证。

验证两个表的数据完整性,重启主从同步

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多