【求助】从A库提取的mixed格式的binlog,有没有办法把sql操作还原到新安装的B库上?

qq_29452017 2015-07-01 10:22:36
A库其实是阿里云的rds云数据库,我在其他服务器上搞了个新的数据库(B库),然后从阿里云下载binlog,还原到B库,那么问题来了,使用了命令:
mysqlbinlog -v --base64-output=decode-rows -d dbname mysql-bin.000800 > test.sql

后,发现test.sql里凡是insert update语句全是注释状态?这样执行source肯定是不成功的吧,是我使用方式不对吗?
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150623 21:10:10 server id 1154825058 end_log_pos 120 CRC32 0xc2bbe735 Start: binlog v 4, server v 5.6.16-log created 150623 21:10:10
# at 120
#150623 21:10:10 server id 1154825058 end_log_pos 231 CRC32 0x7ca67fb2 Previous-GTIDs
# 648e928c-c587-11e4-903f-ac162d89fd88:1-88450260,
# 72f39443-c587-11e4-903f-ac162d8aa4a4:1-6811
# at 231
#150623 21:10:14 server id 1065724891 end_log_pos 279 CRC32 0x515d2478 GTID [commit=yes]
SET @@SESSION.GTID_NEXT= '648e928c-c587-11e4-903f-ac162d89fd88:88450261'/*!*/;
# at 279
#150623 21:10:14 server id 1065724891 end_log_pos 342 CRC32 0xe3592098 Query thread_id=8124091 exec_time=0 error_code=0
SET TIMESTAMP=1435061414/*!*/;
SET @@session.pseudo_thread_id=8124091/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=524288/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 342
#150623 21:10:14 server id 1065724891 end_log_pos 404 CRC32 0x8a7c8cf6 Table_map: `mysql`.`ha_health_check` mapped to number 755912
# at 404
#150623 21:10:14 server id 1065724891 end_log_pos 460 CRC32 0xccd8cdcb Update_rows: table id 755912 flags: STMT_END_F
### UPDATE `mysql`.`ha_health_check`
### WHERE
### @1=1435061404168
### @2='m'
### SET
### @1=1435061414704
### @2='m'
# at 460
#150623 21:10:14 server id 1065724891 end_log_pos 491 CRC32 0x4f517162 Xid = 102721104
COMMIT/*!*/;


求助大家,有没有办法把里面的sql提取出来?
跪谢~
...全文
432 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40784365 2018-10-11
  • 打赏
  • 举报
回复
1、mysqlbinlog -s 参数 binlog号> sql_insert.sql

2、source /tmp/sql_insert.sql
houseschan 2018-09-11
  • 打赏
  • 举报
回复
挖坟。
下面的命令是阿里云提供的,用意是向用户提供一种查看binlog中所保存的SQL,该命令仅用于查看SQL,不能用于还原数据库,或恢复数据。
mysqlbinlog -vv --base64-output=decode-rows -d dbname mysql-bin.000800> test.sql
如果一定要用test.sql还原数据库,那么必须把一些开头的注释符号删除,比如sed -i 's/^###//' test.sql (理论上可以这样处理test.sql文件,但实际上未经测试)
Linux的用户,想要用binlog文件还原数据库,可以参考man mysqlbinlog,然后你会看到,要用 binlog文件还原数据库的话,是绝对不能使用--base64-output=decode-rows选项的,mysqlbinlog命令的帮助手册中举出了用binlog文件恢复数据的示例,如下:
mysqlbinlog mysql-bin.000800 |mysql -uroot -p
liuqiuxiang_2090 2015-07-10
  • 打赏
  • 举报
回复
你直接可以使用mysqlbinlog -db dbname mysql-bin.000800 | B 库,就可以恢复你的数据了,出现注释的原因是因为你使用 -v 这个参数
offbeatmine 2015-07-02
  • 打赏
  • 举报
回复
这个问题我看你还是咨询一下阿里云的客服,他们更加了解自己的产品

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧