Database and custom file backups are essential.
There are many posts in the forum topics about irrecoverable errors, WSOD, database gone fubar etc. There are times when your site goes awry or gets deleted or corrupted, and the only or best choice is to restore it from a backup.
Backup & Migrate
The Backup & Migrate module facilitates emergency recovery and site migration. You can configure it for automatic backups saved to the filesystem - with more frequent backups during development.
You can also create a manual backup before undertaking any complex configuration. That way, you have a "restore point" in case of disaster.
While there may be some issues of security when you save the database and content as a file (you could exclude certain tables, perhaps), the benefits of having a rollback in case of disaster are significant.
The module also facilitates migration of the site. I just moved a complex site with Views, APK, CiviCRM etc., about 12,000 files. I moved the files, created a new database, edited settings.php and civicrm.settings.php for the new database, exported the database from the existing site and imported it in the new site's database with phpMyAdmin and VOILA - site moved! (sometimes I copy the files, make a default installation, enable the Backup & Migrate module, and import the db in the module interface - that works too).
Drush (Drupal Shell) is a command line utility
To use Drush you need to have shell (SSH) terminal access to your server and be able to install and configure the Drush utility code.
Drush also integrates with the Backup & Migrate module.
Drush archive-dump creates an archive of your files and database with the archive-dump command.
Drush sql-dump uses mysqldump to back up your database. It is particularly effective when combined with Drush aliases so you do not have to be in your site directory, and you can backup a remote server db if you have SSH access on it.
Example sql-dump command (without alias) adding timestamp to filename:
drush sql-dump --result-file=PATH/TO/BACKUP/DIR/DBNAME_`date +"%m_%d_%Y-%H:%M"`.sql
Command line interface
If your webhost gives you access to the Command line: You can perform a database dump with the