If you can't afford downtime, check out Innodb Hot Backup (a commercial product sold by oracle).
If you already happen to be using LVM, check out this post: http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for...
Otherwise, you're going to have some downtime, which could range from a few seconds to a lot longer depending (mostly) on the size of your data. The simplest way is using mysqldump, but that may be too slow (probably not though, unless you have really low-end hardware, 1m records isn't that many).
There are faster (and less straightforward) ways, which basically involve:
-stop the server
-copy the data directory somewhere else
-restart the server
Google is your friend here. If you have a spare server, you might also consider setting up replication so that the next time you want to back up your data, you can take it from a slave and it won't require any downtime.