Have you tried?

    mysqldump --compress --add-drop-table data --routines --events  --comments --extended-insert -h {host} -u {user} -p {database} > dbdump.sql

This simple the way I always do it without any problems. Basically doing the dump this way you get everything you have (data, objects and sometimes precious comments I have) at a certain moment ignoring uncommitted transactions.