Basically you need to handle STDERR in the same way as STDOUT.
Pipe it in cron
0 0 * * * (/usr/bin/time /path/to/mysqlbackup.sh 2&>1) | /bin/mail -s "MySQL Backup" "admin@example.com"
This works on Ubuntu, you reported it doesn't work for you (empty mail body). I'd be interested to dig into that so more, but in the meantime...
Adjust your script
You can make your script only print to STDOUT by redirecting STDERR (at least for that one command to STDOUT)
echo "Starting backup at $(date)"
mysql -u potato -e "show status" 2>&1 # produces error we want, so redirect it
FILE="/path/to/file.bak"
FILESIZE=`du -h $FILE | cut -f1`
echo $FILESIZE
If you want any error in your script to be sent to STDOUT, you can globally redirect STDERR to STDOUT by adding this at the top of your script:
exec 2>&1
Toy example
job.sh
#prints out to STDOUT and STDERR
echo good
echo error >&2
echo good
script.sh
#this runs job.sh redirecting STDERR to STDOUT
sh job.sh 2>&1
Now running job.sh, with various redirections shows its printing to STDOUT and STDERR
$sh job.sh > /dev/null
error
$sh job.sh 2> /dev/null
good
good
running script.sh shows its only printing to STDOUT even though job.sh is printing to STDERR
$sh script.sh > /dev/null
$sh script.sh 2> /dev/null
good
error
good