使用 mysql binlog 恢复数据
来源:互联网 发布:清华大学北京大学知乎 编辑:程序博客网 时间:2024/05/08 02:05
【mysqlbinlog】
从binlog里面摘出需要恢复执行的SQL
mysqlbinlog --start-position="$startpos" --stop-datetime="$stoptime" --database="$db" "$binlog_xxxxxx" > recover.sql
/$homedir/bin/mysql --defaults-extra-file=/$homedir/etc/user.root.cnf < recover.sql // 或者 source /$path/recover.sql
【例子1,按position导出】mysqlbinlog --start-position=xxx --stop-position=xxx mysql-bin.000xxx > all.sql
【例子2,按position,只导出某个库的SQL】mysqlbinlog --start-position=xxx --stop-position=xxx --database=dbname mysql-bin.000xxx > dbname.sql
【例子3,同样可以处理relay-log】mysqlbinlog --start-position=253 --stop-position=6731 relay-log.000146 > sql
【手动主从切换,需要补数据的时候】
当主库异常,从库没有都停在同一个点上,如果主库还可以连上继续同步(从库还能继续拉binlog),那么就等待从库同步完成,再主从切换
当主库异常,从库没有都停在同一个点上,如果从库已经不能继续直接通过主从同步拉binlog,但是主库机器没死,可以手动去主库机器上把binlog找出来恢复(根据从库slave staus点和主库master status点的差异,或者说根据从库slave staus点和主库最后一条binlog的position点的差异)
当主库异常,从库没有都停在同一个点上,如果从库已经不能继续直接通过主从同步拉binlog,并且主库机器死了,那么可以选择已经同步完成,并且拉取的binlog最多那个从库作为新主库,
先切中间层入口,让其提供写服务,然后把其它从库“向新主看齐”(通过其它从库relay-log最后一条SQL,找到新主relay-log中相应位置position_A,然后把position_A往后的所有relay-log抓出来
去从库上进行恢复,注意每个从库与新主库之间的relay-log可能都是不一样的,要分别抓取不同的relay-log段)
【例子4,按 时间 导出】
可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间
./mysqlbinlog --stop-date="2009-04-10 17:41:28" /$path/mysql-bin.000002 > xxx.sql
【例子5,如果按时间导出的时候跨越多个binlog,中间用空格隔开,打上完全路径】
./mysqlbinlog --start-date="2009-04-10 17:30:05" --stop-date="2009-04-10 17:41:28" /$path/mysql-bin.000002 /$path/mysql-bin.0000023> xxx.sql
【ROW模式下从binlog里面截取SQL并重新执行的方法---基本和STATEMENT模式一样】
mysqlbinlog -vv mysql-bin.000xxx|less // 查看ROW格式binlog的时候加上 -vv ,可以把SQL语句部分信息打印出来,方便辨认,方便找到 start-position 和 stop-position
mysqlbinlog --start-position=xxx --stop-position=xxx mysql-bin.000xxx > recover.sql //和STATEMENT模式一样
mysql.local < recover.sql //和STATEMENT模式一样
【其它,查看row格式的binlog的相关语句】
mysqlbinlog --base64-output="decode-rows" –vv mysqlbinlog |less
1、show binlog/relaylog events in mysql-bin.xxxxxx from posxxx limit xxx;
2、mysqlbinlog --base64-output="decode-rows" --verbose -v --datebase -D --start-position --start-datetime
从binlog里面摘出需要恢复执行的SQL
mysqlbinlog --start-position="$startpos" --stop-datetime="$stoptime" --database="$db" "$binlog_xxxxxx" > recover.sql
/$homedir/bin/mysql --defaults-extra-file=/$homedir/etc/user.root.cnf < recover.sql // 或者 source /$path/recover.sql
【例子1,按position导出】mysqlbinlog --start-position=xxx --stop-position=xxx mysql-bin.000xxx > all.sql
【例子2,按position,只导出某个库的SQL】mysqlbinlog --start-position=xxx --stop-position=xxx --database=dbname mysql-bin.000xxx > dbname.sql
【例子3,同样可以处理relay-log】mysqlbinlog --start-position=253 --stop-position=6731 relay-log.000146 > sql
【手动主从切换,需要补数据的时候】
当主库异常,从库没有都停在同一个点上,如果主库还可以连上继续同步(从库还能继续拉binlog),那么就等待从库同步完成,再主从切换
当主库异常,从库没有都停在同一个点上,如果从库已经不能继续直接通过主从同步拉binlog,但是主库机器没死,可以手动去主库机器上把binlog找出来恢复(根据从库slave staus点和主库master status点的差异,或者说根据从库slave staus点和主库最后一条binlog的position点的差异)
当主库异常,从库没有都停在同一个点上,如果从库已经不能继续直接通过主从同步拉binlog,并且主库机器死了,那么可以选择已经同步完成,并且拉取的binlog最多那个从库作为新主库,
先切中间层入口,让其提供写服务,然后把其它从库“向新主看齐”(通过其它从库relay-log最后一条SQL,找到新主relay-log中相应位置position_A,然后把position_A往后的所有relay-log抓出来
去从库上进行恢复,注意每个从库与新主库之间的relay-log可能都是不一样的,要分别抓取不同的relay-log段)
【例子4,按 时间 导出】
可以在mysqlbinlog语句中通过--start-date和--stop-date选项指定DATETIME格式的起止时间
./mysqlbinlog --stop-date="2009-04-10 17:41:28" /$path/mysql-bin.000002 > xxx.sql
【例子5,如果按时间导出的时候跨越多个binlog,中间用空格隔开,打上完全路径】
./mysqlbinlog --start-date="2009-04-10 17:30:05" --stop-date="2009-04-10 17:41:28" /$path/mysql-bin.000002 /$path/mysql-bin.0000023> xxx.sql
【ROW模式下从binlog里面截取SQL并重新执行的方法---基本和STATEMENT模式一样】
mysqlbinlog -vv mysql-bin.000xxx|less // 查看ROW格式binlog的时候加上 -vv ,可以把SQL语句部分信息打印出来,方便辨认,方便找到 start-position 和 stop-position
mysqlbinlog --start-position=xxx --stop-position=xxx mysql-bin.000xxx > recover.sql //和STATEMENT模式一样
mysql.local < recover.sql //和STATEMENT模式一样
【其它,查看row格式的binlog的相关语句】
mysqlbinlog --base64-output="decode-rows" –vv mysqlbinlog |less
1、show binlog/relaylog events in mysql-bin.xxxxxx from posxxx limit xxx;
2、mysqlbinlog --base64-output="decode-rows" --verbose -v --datebase -D --start-position --start-datetime
0 0
- 使用 mysql binlog 恢复数据
- MYSQL数据BINLOG恢复
- mysql binlog恢复数据
- 使用binlog恢复数据
- MySQL--binlog日志恢复数据
- mysql通过binlog恢复数据
- mysql通过Binlog恢复数据
- mysql通过binlog恢复数据
- MySQL binlog日志恢复数据
- mysql通过binlog恢复数据
- mysql 数据恢复 通过binlog恢复数据
- mysql使用binlog恢复使用delete误删的数据
- mysql使用binlog恢复数据 与 union 与 索引优化
- Windows下,MySql使用binlog恢复表和数据初级教程
- Windows下,MySql使用binlog恢复表和数据初级教程
- MySQL--binlog二进制日志恢复数据
- 利用mysql的binlog恢复数据
- MySQL数据恢复--binlog
- C++开发者都应该使用的10个C++11特性
- hihoCoder 1224 赛车 (dfs,邻接链表存边)
- linux 下 ^M 的解决办法
- Appium+Robotframework实现iOS应用的自动化测试-1:Appium在OS X中的安装
- maven pom.xml详解
- 使用 mysql binlog 恢复数据
- Appium+Robotframework实现iOS应用的自动化测试-2:OS X中启动Appium
- IOS 传感器简单介绍
- solr安装
- Spring 3 MVC – Introduction to Spring 3 MVC Framework
- Appium+Robotframework实现iOS应用的自动化测试-3:一个必不可少的工具介绍
- Square:从今天开始抛弃Fragment吧!
- 一篇让你知道程序员和黑客区别的文章
- 面试题总结