Some thoughts on the three approaches:
symlink – this makes it easy for your fellow admins to see what's going on. (I seem to have misremembered update issues when the package manager sees a symlink where it expects a file or directory.)
fstab – this will have the smallest impact, in my opinion. Just remember it's a good idea to make the mountpoint, i.e. the empty
/var/lib/mysql on the root partition, immutable with
chattr +i /var/lib/mysql, so that things fail hard if for some reason the data volume is not mounted, instead of filling up your drive.
my.cnf – this will have minimal impact, unless you use tools that blindly assume things are in
/var/lib/mysql. And there's always one more tool that you hadn't thought of, plus SELinux/Apparmor, plus logrotate, ….
None of these are "OMG, you will be doomed!", in my opinion. In some cases (multiple daemons on the same server), you'll need multiple
my.cnfs anyway. Otherwise, I'd probably go with a mount or bind-mount.