Your table data size is more than innodb_buffer_pool (which is store in ram). means need lot of disk read/write IO. It takes time more than lock_timeout.
your innodb_buffer_pool_size variable is not set correctly. Its value lie 70-80 % of RAM. As RIBPS result, minimum it should be 4GB. but above message it shows 2.1 GB (Total memory allocated 2125824000) . set it & run the transaction
run the query- SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM (SELECT SUM(data_length+index_length) Total_InnoDB_Bytes FROM information_schema.tables WHERE engine='InnoDB') A;
set profiling variable & see where the time is consuming by show profile commad. it may be possible that after update mysql to 5.6 your server variable untuned, so check server variable