Error number: MY-010641; Symbol: ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE; SQLSTATE: HY000
Message: NDB Binlog: Skipping locally defined table ‘%s.%s’ from binlog schema event ‘%s’ from node %d.
MY-010641; ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE; HY000 错误是MySQL在使用NDB Cluster节点时可能会遇到的一个错误。这表示NDB节点禁用了“binlog_ignore_db”选项并尝试记录从此外部MySQL服务器创建的局部表。
这个错误是由一个选项引起的:binlog_ignore_db用于根据数据库名称禁用NDB Cluster主节点上的binlog记录功能,但由于在局部MySQL节点和NDB节点的关系上的某些限制,NDB不允许禁用binlog记录本地的表的。
当你使用SQL语句正确地创建了一个局部表时,你可能会遇到这个错误。该表不是存储在NDB Cluster上的表,也不是NDB Cluster注册的表;而是本地MySQL实例下的表。这通常是在一组混合式更新中会发生的,其中一些更新是本地的,一些更新是集群的MySQL。
为了解决这个问题,首先你需要把`binlog_ignore_db`选项设置为`ON`,这样MySQL可以将任何本地表及其更新写入binlog文件,而不是忽略它们。其次,你必须改变更新方式,以便MySQL可以对集群中的表和本地表的更新作出正确的判断。
另一个办法是将更新变更为“局部更新”,也就是说,在NDB Cluster上创建这些表,而不是在本地MySQL实例上。此外,还可以检查binlog_error_action 选项,以确保使用事务中包含的更新,而不会被简单地忽略或复制。
此外,你可以通过在NDB Cluster或单个MySQL节点上添加条目来禁用binlog,然后在重新启动时再改变这个选项。
通过以上操作,可以解决遇到MY-010641; ER_NDB_BINLOG_SKIPPING_LOCAL_TABLE; HY000 错误的问题。