mysql 完全恢复_MySQL两种不完全恢复的方法

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

e1a3a4336bdb4d15e88f2353b86d50fd.png

修改/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更简洁一些.

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值