We rely on mysqldump with these flags:

--single-transaction --quick


This will not lock InnoDB tables and will use the least RAM possible to complete the dump in a consistent state.

However, for MyISAM tables (usually not the case since InnoDB is the default) tables will be locked.

Did this answer your question?