首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL两种不完全恢复的方法

MySQL两种不完全恢复的方法

作者头像
哲洛不闹
发布2018-09-19 11:03:41
6500
发布2018-09-19 11:03:41
举报
文章被收录于专栏:java一日一条java一日一条

MySQL 5.6.14 生产环境凌晨3点的备份,不完全恢复到中午12点. (xtrabackup_binlog_pos_innodb的内容是mysql-bin.006946 3784607) 第一种方式:mysqlbinlog 1.找到需要恢复的binlog 进入binlog目录,执行 ll | awk '{print $9}' > /tmp/binlog.index

然后修改/tmp/binlog.index文件,删除不需要恢复的文件名. 2.解析binlog time mysqlbinlog $(cat /tmp/binlog.index) --start-position=3784607 --stop-datetime='2015-07-13 12:00:00' > /tmp/binlog real 2m32.399s user 1m24.514s sys 1m5.803s 3.设置MySQL服务器参数 max_allowed_packet=100M innodb_flush_log_at_trx_commit=0

4.执行 time mysql -uroot -p -S mysql.sock --force < /tmp/binlog

real 50m24.341s user 5m1.426s sys 3m32.348s

执行3.4G的文件,用时50分钟. 第二种方式:复制,使用SQL线程执行 1.找到需要恢复的binlog 进入binlog目录,执行 ll | awk '{print $9}' > /tmp/binlog.index

然后修改/tmp/binlog.index文件,删除不需要恢复的文件名.

2.拷贝需要的binlog至一个新的目录 mkdir /tmp/testlog cp $(cat /tmp/binlog.index) /tmp/testlog/ 3.修改服务器参数 max_allowed_packet=100M innodb_flush_log_at_trx_commit=0 server_id=111 relay_log=/tmp/testlog/mysql-bin relay_log_index=/tmp/testlog/mysql-bin.index skip_slave_start = 1 其中 server_id一定要修改为一个不同的值,否则binlog被直接丢弃. skip_slave_start防止自动启动复制 4.启动实例,生成复制的相关文件 change master to master_host='localhost', master_port=3306, master_user='repl', master_password='repl', master_log_file='dummy.binlog', master_log_pos=777; master是一个随便的值,主要是生成master.info,relay-log.info等相关文件 5.关闭实例,修改文件 修改relay-log.info

修改/tmp/testlog/mysql-bin.index 为 awk '{print "/tmp/testlog/"$1'} /tmp/binlog.index > /tmp/testlog/mysql-bin.index 6.启动实例,启动复制 start slave sql_thread UNTIL RELAY_LOG_FILE = 'mysql-bin.006982', RELAY_LOG_POS = 37300415; 恢复用时43分钟. mysqlbinlog方式更简单,但是一旦出错,容易前功尽弃 复制的方式,前期配置比较复杂,但是出现错误,更容易修正. 从效率上看,相差不大 如果有大量的binlog需要恢复,建议使用复制的方式. 如果只有少量的binlog需要恢复,还是使用mysqlbinlog更简洁一些.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java一日一条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档