`cp` is not instantaneous. Unless you lock the entire file, one block can change while you're reading another block. You end up with a Frankenstein of a file, compared with a consistent snapshot if you had simply lost power.
If your filesystem supports snapshotting, it would be safe to create a snapshot and `cp` the database off of that snapshot.
If your filesystem supports snapshotting, it would be safe to create a snapshot and `cp` the database off of that snapshot.