For the scope of redundancy you're looking for, you're talking about load balancing - which is complex and costly. There are a number of things that you'll have to deal with, such as data sync between servers, handling active user sessions, etc.
If you're looking for a less expensive way to do it, you could setup a cron job to sync the primary server with the secondary server nightly, and if there is a long-term interruption, you can modify your dns to point to the secondary server. (Keep in mind, you would be sending your traffic to a server that would not completely current with the primary server)
Mail is a little bit easier as long as you only want to be able to continue receiving mail - and deliver once the primary is back online. Check out this article on secondary MX for cPanel servers. It's fairly easy.
http://www.techtalkpoint.com/article...-mx-in-cpanel/
Everything I said really only apples if you manage both servers. If you are on a shared account, you would need to discuss your options with your host. If you are truly running a site in need of a high-availability solution, you should probably not be using shared hosting.