Home > Database > Mysql Tutorial > MySQL两种不完全恢复的方法

MySQL两种不完全恢复的方法

WBOY
Release: 2016-06-07 15:53:51
Original
1007 people have browsed it

MySQL 5.6.14生产环境凌晨3点的备份,不完全恢复到中午12点.(xtrabackup_binlog_pos_innodb的内容是mysql-bin.006946 3784607)

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

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

MySQL两种不完全恢复的方法

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

本文永久更新链接地址

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template