dh碰到的异常


table map id 溢出,5.5.28
    知识点
        RBR中的Table_ID 和Innodb中的table_id 没有关系,且和物理文件没有对应关系。
        Flush Table 可以重置RBR中的Table_ID,一般是递增
     解决办法:
        修改源码:sql/table.h中table_map_id的定义 uint 改为ulong
        table id的分配在函数assign_new_table_id()(sql\sql_base.cc:3598)中分配
ulong tid= ++last_table_id; /* get next id */        
    影响参数:
        table_definition_cache?
        table_open_cache
        在cache中找到表定义,在返回之前,会判断table_def_cache中是否太大,如果太大将清理cache中最久没用的表定义


    现象:
        (1) SLAVE丢失master的数据
        (2) 当一个DML同时操作多个表,且其中2个表的mapid相同时(通常为0或溢出时),会导致slave执行这个event时crash,并重启mysqld实例
    参考:
        BUG
        MySQL Binlog中TABLE ID源码分析 http://blog.chinaunix.net/uid-26896862-id-3329896.html
        Binlog中table_map_id 的探究 http://www.cnblogs.com/cenalulu/archive/2012/09/24/2699907.html
        http://blog.csdn.net/zbszhangbosen/article/details/8134571
请使用浏览器的分享功能分享到微信等