mysql通过备份和binlog恢复数据-创新互联
模拟数据库被×××,导致数据库被删除后的恢复操作。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、雅安服务器托管、营销软件、网站建设、波密网站维护、网站推广。1.先来个全备:
mysqldump -uroot -pgq266566 -A --master-data=2 > all.sql
2.模拟线上生产环境。备份完后会有新的修改。
3.然后模拟数据库被×××。chain_web被删除了。
4.上线发现被删除,先用备份恢复chain_web库 。mysql -uroot -p123456 -o chain_web < all.sql
只恢复chain_web库。
恢复到备份时候的状态。
5.根据备份时候的--master-data=2 找到 position位置 在all.sql备份文件中。
6.从备份位置解析binlog
mysqlbinlog --no-defaults -v -v --base64-output=decode-rows --start-position=194 mysql-bin.000009 > test.sql
--base64-output参数用来控制binlog部分是否显示出来的,指定为decode-rows表示不显示binglog部分
找到drop时候的位置点。
可以看到是8029
然后再根据这俩位置 解析binlog:
mysqlbinlog --start-position=194 --stop-position=8029 mysql-bin.000009 --database=chain_web > test4.sql
(解析binlog的时候加--no-defaults -v -v --base64-output=decode-rows参数可以看到比较直观的sql,但是会出现无法导入数据库的现象.可以先加参数解析出来 查看解析结果确认没问题后,再不加参数进行解析,然后导入相应的库中。如果开了GTID的话,在解析时候加参数--skip-gtids=true )
(--datebase=chain_web 意思是只解析chain_web库的操作 因为只删除了chain_web库 chain库没有操作 不需要解析binlog 否则导入会报主键冲突)
vim test4.sql 可以看到没有drop语句了。然后就可以导入数据库中
mysql -uroot -p123456 chain_web < test4.sql
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:mysql通过备份和binlog恢复数据-创新互联
本文来源:http://ybzwz.com/article/ddsgpj.html