我有用于通过 GTID 复制的 mysql 二进制日志。
我正在尝试显示执行的更新/插入语句,如下所示:
mysqlbinlog --base64-output=DECODE-ROWS mysql-bin.000024
Run Code Online (Sandbox Code Playgroud)
但我所看到的只是这样,没有更新或插入 stmt 的痕迹:
SET TIMESTAMP=1431681617/*!*/;
BEGIN
/*!*/;
# at 746987321
# at 746987392
# at 746987484
#150515 11:20:17 server id 1 end_log_pos 746987515 CRC32 0xeb874754 Xid = 997501767
COMMIT/*!*/;
# at 746987515
#150515 11:20:22 server id 1 end_log_pos 746987563 CRC32 0xc5ece64a GTID [commit=yes]
SET @@SESSION.GTID_NEXT= 'a4ade293-c63a-11e4-94cf-005056944a56:2059057'/*!*/;
# at 746987563
#150515 11:20:22 server id 1 end_log_pos 746987650 CRC32 0x92296355 Query thread_id=71622 exec_time=0 error_code=0
Run Code Online (Sandbox Code Playgroud)
我不确定 GTID 复制的格式/配置以及在哪里寻找它...
我有一个日期时间字段,但我经常查询日期部分,如下所示
select * from table where date(datetime_field)=curdate()
Run Code Online (Sandbox Code Playgroud)
此查询不能在 datetime_field 上使用索引!对代码或数据库进行最少更改的最佳解决方案是什么?
附言。如果有我还不知道的解决方案,升级 mysql 可能是一个选择,但 5.6 的更短期解决方案将不胜感激