I like to create a backup of the whole database before doing any major changes on a live environment.
For smaller projects that is no problem as it usually only takes a few seconds.
On larger projects however I've noticed that using mysqldump creates a lock on the database while the backup is being created - which is obviously very bad as new orders won't be accepted during that time period.
I've tried using the --skip-lock-tables command with mysqldump, but I fear that this might create an unusable backup, as the database might be written to while the backup is being created.
What are some recommended strategies for creating a backup of a database before doing any major changes, on a live environment?