Error number: MY-010645; Symbol: ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE; SQLSTATE: HY000
Message: NDB Binlog: Skipping drop of locally defined table ‘%s.%s’ from binlog schema event ‘%s’ from node %d.
错误说明
ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE错误消息表示出现MySQL无法将DROP LOCAL TEMPORARY表语句写入binlog日志。虽然这条语句在NDB模式下可以正常执行,但是不会在binlog日志中体现。
常见案例
使用MySQL NDB存储引擎时,发布DROP LOCAL TEMPORARY TABLE语句时,由于MySQL没有对这种操作记录到binlog日志,就会出现ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE错误。
解决方法
这个错误是由于MySQL NDB存储引擎无法将DROP LOCAL TEMPORARY TABLE语句写入binlog日志,而引起的。因此,解决这个问题只能从把LOCAL TEMPORARY TABLE设置为GLOBAL TEMPORARY TABLE开始,只有将LOCAL TEMPORARY TABLE设置为GLOBAL TEMPORARY TABLE,MySQL才能将DROP GLOBAL TEMPORARY TABLE语句写入binlog日志:
ALTER TABLE temp_table RENAME TO global_temp_table;
另外,还可以使用–max_binlog_cache_size参数来设置binlog缓冲区的大小,以便更多的将binlog日志写入给binlog日志。
如果把LOCAL TEMPORARY TABLE设置为GLOBAL TEMPORARY TABLE的方法不能解决ER_NDB_BINLOG_SKIPPING_DROP_OF_LOCAL_TABLE错误,那就可以使用–ndb-log-binlog-index参数。该参数启用叠加索引,并且会将每个NDB操作写入binlog日志,从而有效解决该问题。