Backup From Online Manual

Revision as of 17:09, 4 July 2013 by MrPhil (talk | contribs) (→‎Restoring your database: Add general notes on DB restore)
Jump to: navigation, search

Whatever anybody else might tell you, backing-up is the most important thing you can ever do with SMF or any website. If something goes wrong, yes, you may well be able to fix it. If you can not, maybe somebody else can. But what happens if nobody CAN help you? Databases, especially, can extremely difficult to repair.

Bye-bye forum. Bye-bye members. Bye-bye posts.

Now, you REALLY do not want that to happen, do you? Of course not. So, what to do?

You may have noticed that there's a facility in SMF's "Forum Maintenance" section, to backup your database. Sadly, it's not terribly good. So, we'll ignore that. Also, though, what about your actual site? What about restoring the backups?

Firstly, let's deal with the database.

Backing up your database

When you bought your domain, your host will have given you details on how to access your site's cPanel®, or something similar.
There, you'll be able to access something called "phpmyadmin".
Now, of course, different hosts will have different ways of accessing that. For the sake of this article, I'm going to give the means of accessing it via cPanel. Other hosts may be different. But, they'll be pretty similar.

Backing up your database with cPanel®

  1. Firstly, look for the section labelled "Files" and click on (You guessed it) "Backups".
  2. In the new page that opens, you'll see "Download a MySQL Database Backup".
  3. Under that, click on the name of your database and a requester will open, so that you can choose where that backup should be downloaded to.

It really is as simple as that!
So, there really is no excuse for not backing up, OK?

The second way, is to use phpMyAdmin.

Backing up your database with phpMyAdmin

Again, you'll need your site's cPanel.

  1. Look for the section labeled "Databases".
  2. Under that heading, you'll find "phpMyAdmin".
  3. If you click that, you'll see a page that might, at first, seem somewhat scary.
  4. It IS. Be careful what you do, there, because you can SERIOUSLY break things.
  5. Look at the left-hand pane and you'll see the name(s) of your databases.
  6. Click on one of them and you'll taken to another scary page.
  7. On there, you'll see some tabs, along the top. The one you want is labeled "Export".
  8. When you click on that, you'll get yet another page.
  9. Under "View dump (schema) of database", you'll see "Export".
  10. Just below that, click "Select all".
  11. At the bottom of the page, ensure that "Save as file" is checked.
  12. Then, click "Go".

The rest, I think you'll be familiar with.

General Notes

  1. SMF's Admin section has a built-in database backup function. It is broken, so do not use it. It will work in some cases, but don't count on it. Try to avoid using it unless you're desperate and have no other means of backing up your database.
  2. Most hosts have some sort of process time limit, that may prevent any backup utility from running to completion. Always check (at least, periodically), that you're getting complete backups. If it's timing out, talk to your host about how to suspend this limit, or investigate utilities that do the backup job in small chunks rather than all at once.
  3. You should end up with an .sql file (possibly compressed, zipped, or gzipped). It should have commands inside it to CREATE your TABLEs and INSERT data into them (it may also DROP old tables before creating new ones). Make sure it has both, and looks complete (CREATE and INSERT for all your SMF tables), before assuming that it's a good backup. Spot check a few tables to see if all their data is in the backup (note that the order of records may differ between the database "browse" display and what's in the backup file.
  4. There are so many tragic tales of site owners who needed to restore a backup and then found it was no good (even their host's server backups were no good). Once you have your first backup, try restoring it to a second, scratch database to see if it's good. You want to learn how to do it ahead of time so you won't be in a panic when the real need arises.
  5. Save a copy of the backup someplace safe, other than on your web host server.
  6. You don't have to go over your backup with a fine-toothed comb every time, but you should do so the first time, whenever you make a change to your backup method, and just once in a while (for good measure).

Restoring your database

Restoring your database with phpMyAdmin

To restore your backed-up database, you do exactly the same as to backup, except that instead of clicking "Export", you need the "Import" tab and you navigate to your backup file, by clicking on "Choose", under "Location of the text file".

Please, be aware, though, that if you have large databases, it may be not possible to backup using phpMyAdmin, as phpMyAdmin has some file size limits.

General Notes

  1. SMF does not include any utility for reloading (restoring) the database, though it probably should.
  2. Learn how to do a database restore ahead of time, and practice it at least once (with a scratch copy of the database), so you won't be in a blind panic when you have to do it for real.
  3. Know how to browse through the original and restored databases (in phpMyAdmin) to eyeball them and get a comfortable feeling that everything is there (all records in all tables). Note that there is no guarantee that records will appear in the same order in the original database, the backup, and the new database.
  4. Some hosts have process time limits that may prevent you from running your restore (via phpMyAdmin) to completion. Not to panic. You may be able to find out from your host how to suspend or increase the process time limit. There are utilities out there to split up the restore (import) task into smaller pieces so you won't exceed time limits. Worst case, you can use an ordinary text editor (not a word processor) to split up the .sql file into smaller pieces, and import them separately. Do the DROP TABLE/CREATE TABLE commands first in one .sql file, and then do maybe 500 or 1000 complete INSERT commands at a time in additional imported .sql files.
  5. MySQL defaults to Latin-1 (ISO-8859-1) encoding with "Swedish" collation (for sorting purposes). Why Swedish? MySQL was originally developed in Sweden. Anyway, if your database is not going to be the default Latin-1 encoding, be sure to change the newly-created database to the appropriate encoding (e.g., UTF-8) before starting an import (restore). The encoding is critical; the collation typically doesn't matter all that much.
  6. phpMyAdmin needs to be told what encoding the .sql file(s) are in when you do the import. If your backup is, say, UTF-8, you need to tell phpMyAdmin that, or it will assume the file is Latin-1 and will translate all the text from Latin-1 to whatever encoding your new database is in (say, UTF-8). This will make a horrendous mess of your database.
  7. Especially if you need to rerun part of an import, be careful not to import the same data twice. If you're lucky, the process will die with a duplicate key error. This is why it's generally good to DROP and CREATE the tables so that they're guaranteed empty at the start.

Backing up your forum files

There are two common ways of doing this.

Firstly, you can open your FTP client and use it to download everything to your hard disk.

The other way is to use your site's cPanel (Or whatever your host uses).

  1. Go to cPanel, look for the section labeled "Files" and click on "Backups".
  2. In the new page that opens, you'll see "Download a Home Directory Backup".
  3. Just below that, click on the "Home Directory" button.
  4. You'll get a requester, so that you can choose where the backup's saved to and you're away!

This will save your whole site. So, be aware, of course, that this can take a LONG time to do, especially if you have a lot of files on your site.

Restoring your forum files

Again, this can be done by using FTP to transfer the backed-up files from your hard disk to your site.

The other way is to go to the same place in your site's cPanel (Or whatever your host uses) that you use to backup.

  1. Go to cPanel, look for the section labeled "Files" and click on "Backups".
  2. In the new page that opens, you'll see "Restore a Home Directory Backup". Click "Choose" to navigate to your backup, then "Upload" to start the restoration.


Advertisement: