binlog 导入新数据库的困惑

xiaolizi 2017-06-13 11:36:20
需求是这样:数据库A 产生了日志文件 a.000001 需要把a.000001 中的操作导入到数据库B中,在win环境下,命令是这么写的:
mysqlbinlog "D:\MySQL Datafiles\BinLog\a.000001" | mysql -uroot -p123456 -hlocalhost B

结果数据库B始终没有更新,下一步,我把a.000001 导出成a.sql文本文件,发现每一条sql语句格式如下:
# at 21981
#170612 22:13:09 server id 1 end_log_pos 22103 Query thread_id=63 exec_time=0 error_code=0
use `A`/*!*/;
SET TIMESTAMP=1497276789/*!*/;
UPDATE `player` SET `name`='看见' WHERE (`player_id`='1')
/*!*/;

也就是说都有use 'A' 这样的数据库打开语句,是不是这个原因,才导致没法更新到数据B中?
望哪位大神,能给个提示,怎么解决这个问题,感谢!

...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolizi 2017-06-16
  • 打赏
  • 举报
回复
To Rucypli, 感谢! 更新到mysql-5.7.18后,发现binlog导出的数据,执行的sql语句看不到了,之前5.5是能看到文本信息的,如下: BEGIN /*!*/; # at 291 #170616 17:21:11 server id 1 end_log_pos 392 CRC32 0x711ba251 Table_map: `test`.`player` mapped to number 128 # at 392 #170616 17:21:11 server id 1 end_log_pos 518 CRC32 0x844d8cd0 Write_rows: table id 128 flags: STMT_END_F BINLOG ' B6NDWRMBAAAAZQAAAIgBAAAAAIAAAAAAAAEABG93XzEABnBsYXllcgAfCA8BCQIRAQMDAwMJCQgC AREBAQEB/A8PEREPDw8DDxNgAAAAAkABgAAAAIAAaQBpAK0Azv//f1GiG3E= B6NDWR4BAAAAfgAAAAYCAAAAAIAAAAAAAAEAAgAf/////wAAIIABAAAAAAAAAARqYWNrAAAAAAAA AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAADQjE2E '/*!*/; # at 518 #170616 17:21:11 server id 1 end_log_pos 549 CRC32 0x42c5c045 Xid = 6 COMMIT/*!*/; # at 549 #170616 17:21:37 server id 1 end_log_pos 614 CRC32 0x7f373b30 Anonymous_GTID last_committed=1 sequence_number=2 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/; # at 614 #170616 17:21:37 server id 1 end_log_pos 686 CRC32 0x1231c144 Query thread_id=5 exec_time=0 error_code=0 SET TIMESTAMP=1497604897/*!*/;
xiaolizi 2017-06-14
  • 打赏
  • 举报
回复
To zjcxc 感谢!
zjcxc 2017-06-14
  • 打赏
  • 举报
回复
5.7.1,不知道能不直接读取旧版本的 binlog,如果不能,就只有升级了
rucypli 2017-06-14
  • 打赏
  • 举报
回复
可以导入到A库以后rename到B库 alter table A.xxx rename B.xxx;
xiaolizi 2017-06-13
  • 打赏
  • 举报
回复
To zjcxc, 我用的mysql是5.5.53,mysqlbinlog 没有 rewrite-db这个参数,需要哪个版本才才开始有啊
zjcxc 2017-06-13
  • 打赏
  • 举报
回复
查了下, mysqlbinlog 有 rewrite-db 参数,直接用这个就行 --rewrite-db="tA->B"
zjcxc 2017-06-13
  • 打赏
  • 举报
回复
生成 sql 文件,然后把文件中的 use 改掉后执行

56,679

社区成员

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

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