• Manish Kumar's avatar
    BUG#12400221 - 60926: BINARY LOG EVENTS LARGER THAN MAX_ALLOWED_PACKET · 1605b7f6
    Manish Kumar authored
    Problem
    ========
                
    SQL statements close to the size of max_allowed_packet produce binary
    log events larger than max_allowed_packet.
                  
    The reason why this failure is occuring is because the event length is
    more than the total size of the max_allowed_packet + max_event_header
    length. Now since the event length exceeds this size master Dump
    thread is unable to send the packet on to the slave.
                          
    That can happen e.g with row-based replication in Update_rows event.
                
    Fix
    ====
              
    The problem was fixed by increasing the max_allowed_packet for the
    slave's threads (IO/SQL) by increasing it to 1GB.
    This is done using the new server option included which is used to
    regulate the max_allowed_packet of the slave thread (IO/SQL).
    This causes the large packets to be received by the slave and apply
    it successfully.
    
    sql/log_event.h:
      Added the new option in the log_event.h file.
    sql/mysqld.cc:
      Added a new option to the server.
    sql/slave.cc:
      Increasing the session max_allowed_packet to a large value ,
      i.e. not taking global(max_allowed) into consideration, for the slave's threads.
    1605b7f6
sql_repl.cc 56.7 KB