Backup: Difference between revisions From Online Manual

Jump to: navigation, search
mNo edit summary
No edit summary
Line 1: Line 1:
{{TOCright}}
{{TOCright}}
Backing up is the most important thing you can ever do with SMF or any website. If something goes wrong, and you are unable to fix it, what happens? Bye-bye forum. Bye-bye members. Bye-bye posts. How can you prevent this?
Backing up is the most important thing you can ever do with SMF or any website. Don't let anyone else tell you differently. 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 can extremely difficult to repair.


First -- the database.  Use a fast, reliable database backup tool (not the one that came with SMF 1.1.x or SMF 2.0).  Usually, your web host will give you one. Second -- the files.  SMF files, mods, and themes are easy to replace, but your attachments, images, and other uploaded media are priceless, so back up your files.
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==
==Backing up your database==
First, put your forum in maintenance mode. This will stop your members from adding to the database while you work to save it.
When you bought your domain, your host will have given you details on how to access your site's cPanel®, or something similar.
 
<br>There, you'll be able to access something called "phpmyadmin".
See what your web host gives you for database backup.  You may find a link to "backup database" or else tools like phpMyAdmin or phpPgAdmin for your database. If you cannot use the website control panel, search the internet for other database backup tools.
<br>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®===
===Backing up your database with cPanel®===
If your web host uses cPanel, here's the quickest way to backup your entire database.


#Look for the section labelled "Files" and click on "Backups".
#Firstly, look for the section labelled "Files" and click on (You guessed it) "Backups".
#In the new page that opens, you'll see "Download a MySQL Database Backup".
#In the new page that opens, you'll see "Download a MySQL Database Backup".
#Under that, click on the name of your database. A dialog box will open.  Choose where to save the backup.
#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!
It really is as simple as that!
<br/>So, there really is no excuse for not backing up, OK?
<br>So, there really is no excuse for not backing up, OK?
 
The second way, is to use phpMyAdmin.


===Backing up your database with phpMyAdmin===
===Backing up your database with phpMyAdmin===
Start at your website's administration panel
Again, you'll need your site's cPanel.
 
#Look for the section labeled "Databases".
#Look for the section labeled "Databases".
#Under that heading, you'll find "phpMyAdmin". Click on it
#Under that heading, you'll find "phpMyAdmin".
#Depending on your web host, you might have to first choose a database before logging in, or else you'll have to log in first and then choose a database.
#If you click that, you'll see a page that might, at first, seem somewhat scary.
# Once you are logged in (this might happen automatically) and have picked a database, you will see you have lots of options.  This might seem a little scary.
#It IS. Be careful what you do, there, because you can SERIOUSLY break things.
#It '''is'''. From here, you can do anything to your database you want to do. Just stick to the script and you'll be OK.
#Look at the left-hand pane and you'll see the name(s) of your databases.
#You'll see some tabs, along the top. The one you want is labeled "Export". Click it.
#Click on one of them and you'll taken to another scary page.
# This will take you to a page called "Exporting databases from the current server"
#On there, you'll see some tabs, along the top. The one you want is labeled "Export".
# Under '''Format''', choose SQL.  Under '''Export Method''', choose "Custom".
#When you click on that, you'll get yet another page.
# That opens up a whole lot of options, most of which you don't need to change. 
#Under "View dump (schema) of database", you'll see "Export".
#* Under "Select Database" make sure the database with your SMF tables in it is selected.
#Just below that, click "Select all".
#*At '''Character set of the file" choose the character set of your database.  You can find this by checking inside SMF.
#At the bottom of the page, ensure that "Save as file" is checked.
#* Make sure "save output to a file" is ticked.  
#* Make sure "structure and data" is checked
#* tick the box next to "Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT statement" and tick that box
#Then, click "Go".
#Then, click "Go".
#Save a copy of the backup some place safe. Your web host server '''is not''' a safe place -- if it is damaged, you lose both your forum AND everything you need to recreate your forum.
# Remember to take your forum out of maintenance mode.


After you finish the backup, VERIFY your backup.  Restore it to a second, empty database.  If for some reason there is something wrong with this backup, you want to know NOW so you can repeat the procedure and get it right.  If you cannot get it right, talk to your host about how to solve the problem.
The rest, I think you'll be familiar with.


You don't need to go over your backup with a fine-toothed come every single time, but you should do this the first time, whenever you change how you do things, and just every once in a while. At the very least, have a look at the .sql file. It should end with something like
===General Notes===
{{code|1=/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
#SMF's Admin section has a built-in database backup function. It works in many cases, but also fails in many cases, so we recommend that you '''do not use it''' unless you have no other way to acquire the backup of the database.
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
#Once you have your backup, you should verify if it works or not. The best way is to restore it to a second, empty, database.<br>This is an important step because if for any reason the backup fails you can repeat the procedure immediately and be sure to have a working database in the case you would need it.<br><br>Backups may fail for several reasons, if after repeating the procedure you still are not able to obtain a working backup, please contact your host in order to identify and solve the problem causing the backup to fail.<br><br>If you cannot restore the database, should at least verify that the ''.sql'' file you have obtained has proper SQL syntax and 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 it ''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). If you used SMF's admin panel, make sure the file ends with <br><code>-- Done</code><br>if you used phpMyAdmin it may end with <br><code>/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;<br>/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;<br>/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;</code>
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;}}
#Save a copy of the backup some place safe. Your web host server '''is not''' a safe palce.
 
#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).
If you have a very large forum, the phpMyAdmin backup method might not work because of file size limits. If this happens to you, talk to your host about other tools you can use.


==Restoring your database==
==Restoring your database==
Once you have a .sql file, there are a number of tools you can use to restore it.


===Restoring your database with phpMyAdmin===
===Restoring your database with phpMyAdmin===
If you have used phpMyAdmin to backup your database, you'll remember how to get started.
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".
If you have followed the instructions above, restoring the database will first wipe out everything already on the database. You'll be back at the point you were at the moment you did the backup.
 
# From the tab bar, choose the '''Import''' tab.
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.
# Under '''Location of the text file''', click Choose, and navigate to the .sql file you want to restore.
 
# If you run into any problems during the restore, this may be because of timeout limits your host has set. Do not panic. Talk to your host about what you can do . Look into utilities that can split up the import task into smaller pieces so you won't exceed time limits.
===General Notes===
#SMF does not include any utility for reloading (restoring) the database.
#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.
#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.
#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.
#Depending on your host configuration, MySQL default collation may differ from the one you need, be sure to change the newly-created database to the appropriate collation (e.g., UTF-8) before starting an import (restore).
#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.
#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==
==Backing up your forum files==


There are two common ways of doing this.  Both involve FTP. [[FTP_-_How_do_I_use_FTP|FTP]] to transfer files, so get comfortable with it.
There are two common ways of doing this.


Before beginning, put your forum in maintenance mode to prevent users uploading new images or documents.
Firstly, you can open your FTP client and use it to download everything to your hard disk.


One simple way to do this is to use your FTP client to download a batch of files at to your desktop. Then, you can create a zip file and store that in a safe place.  This can take a very long time. Be careful to you use BINARY mode to transfer pictures, PDFs, WORD documents, etc.  
The other way is to use your site's cPanel (Or whatever your host uses).


A quicker way to do this is to user your site's administration panel.  If you have cPanel, it will work like this:
#Go to cPanel, look for the section labeled "Files" and click on "Backups".
#Go to cPanel, look for the section labeled "Files" and click on "Backups".
#In the new page that opens, you'll see "Download a Home Directory Backup".
#In the new page that opens, you'll see "Download a Home Directory Backup".
#Just below that, click on the "Home Directory" button.
#Just below that, click on the "Home Directory" button.
#A dialog box will pop up.  Choose where to save the backup, click the button and you are done.
#You'll get a requester, so that you can choose where the backup's saved to and you're away!


This might take a while. If it fails in the middle, you might have too many large files in your forum.  Try backing up smaller parts of your forum at one time, or talk to your host about how to solve the problem.  When the process completes, find a safe place to restore those files from backup so you can check that you got all the files you wanted.
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.


Remember to take your forum out of maintenance mode when you are done.
===General Notes===
#Your control panel may have an option to pack (and compress) all your files into one file (.tar.gz, .tgz, .zip, etc.). Consider using this, as it can greatly reduce file transfer time and leave you with only one (large) file to worry about.<br>Of course the bigger the file, the bigger the risk corrupted data will be present (for example transmission errors), so if your site contains a lot of attachments this may not be the best choice. If you're only going to hold on to the file for backup, and not work with its individual files on your PC, this can be a good choice. On the other hand, if you plan to look at or edit files on your PC, you may want to transfer them as individual files.
#Most FTP clients can transfer an arbitrary collection of files and directories (folders) in one operation (such as the entire site at once). There is no need to transfer one file at a time. Some control panel File Managers can do this too.
#If you don't know how to use an FTP client, please read carefully the page [[FTP_-_How_do_I_use_FTP]], in particular the note about FileZilla.
#As with the database backup, do a test restore the first time you back up, and once in a while after that. You want to know that you're doing it right and can do a restore when (not if) it comes time to do it for real.
#Store a copy of your backup somewhere other than your hosting server. Even the best hosts have been known to discover that their own server backups are no good!


==Restoring your forum files==
==Restoring your forum files==


If you have simply copied all the files onto your desktop, you can use FTP to copy them all back up again.
Again, this can be done by using FTP to transfer the backed-up files from your hard disk to your site.


If you have used your host's "Files" utility to create a file backup, you can use it to unpack that backup to the same location or a new one.
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.


Or you can use the "File" or "File Manager" tool your host provides.
# Make sure you want to totally replace your files.  You are about to go back in time to the moment you backed up these files.
#Go to cPanel, look for the section labeled "Files" and click on "Backups".
#Go to cPanel, look for the section labeled "Files" and click on "Backups".
#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.
#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.


 
===General Notes===
===FTP BINARY file transfer mode prevents file damage===
#As with database backup, practice in advance how to do a file restore (to a scratch copy of the site on your server). A panic situation is not a good time to be learning such things.
When you use FTP, make sure you use the correct method for transferring files. "Binary" mode is the safest should be OK. If you accidentally transfer image files in "ASCII" mode, or your FTP client's "Automatic" mode does not correctly choose binary when it needs to, it will damage any image files, compressed files (.zip, .gz, .tgz, etc), non-ASCII documents (.pdf, .doc, etc), and possibly some text files that contain UTF-8 characters. You will not be able to fix these damaged files later.
#Be careful if using FileZilla to transfer with automatic mode selection. It will corrupt all attachment and avatar images unless you specify '''binary''' mode, [[FTP_-_How_do_I_use_FTP#What_FTP_clients_are_available.3F|read this note for more details]].
#Spot check your restored files, especially attachments and avatars, that they survived the round trip, especially if you use [[FTP_-_How_do_I_use_FTP#What_FTP_clients_are_available.3F|FileZilla]].


[[Category:Installing and Upgrading]]
[[Category:Installing and Upgrading]]
[[Category:FAQ]]
[[Category:FAQ]]
[[Category:BFG]]
[[Category:BFG]]

Revision as of 10:21, 21 April 2014

Backing up is the most important thing you can ever do with SMF or any website. Don't let anyone else tell you differently. 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 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 works in many cases, but also fails in many cases, so we recommend that you do not use it unless you have no other way to acquire the backup of the database.
  2. Once you have your backup, you should verify if it works or not. The best way is to restore it to a second, empty, database.
    This is an important step because if for any reason the backup fails you can repeat the procedure immediately and be sure to have a working database in the case you would need it.

    Backups may fail for several reasons, if after repeating the procedure you still are not able to obtain a working backup, please contact your host in order to identify and solve the problem causing the backup to fail.

    If you cannot restore the database, should at least verify that the .sql file you have obtained has proper SQL syntax and 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 it 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). If you used SMF's admin panel, make sure the file ends with
    -- Done
    if you used phpMyAdmin it may end with
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  3. Save a copy of the backup some place safe. Your web host server is not a safe palce.
  4. 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.
  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.
  5. Depending on your host configuration, MySQL default collation may differ from the one you need, be sure to change the newly-created database to the appropriate collation (e.g., UTF-8) before starting an import (restore).
  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.

General Notes

  1. Your control panel may have an option to pack (and compress) all your files into one file (.tar.gz, .tgz, .zip, etc.). Consider using this, as it can greatly reduce file transfer time and leave you with only one (large) file to worry about.
    Of course the bigger the file, the bigger the risk corrupted data will be present (for example transmission errors), so if your site contains a lot of attachments this may not be the best choice. If you're only going to hold on to the file for backup, and not work with its individual files on your PC, this can be a good choice. On the other hand, if you plan to look at or edit files on your PC, you may want to transfer them as individual files.
  2. Most FTP clients can transfer an arbitrary collection of files and directories (folders) in one operation (such as the entire site at once). There is no need to transfer one file at a time. Some control panel File Managers can do this too.
  3. If you don't know how to use an FTP client, please read carefully the page FTP_-_How_do_I_use_FTP, in particular the note about FileZilla.
  4. As with the database backup, do a test restore the first time you back up, and once in a while after that. You want to know that you're doing it right and can do a restore when (not if) it comes time to do it for real.
  5. Store a copy of your backup somewhere other than your hosting server. Even the best hosts have been known to discover that their own server backups are no good!

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.

General Notes

  1. As with database backup, practice in advance how to do a file restore (to a scratch copy of the site on your server). A panic situation is not a good time to be learning such things.
  2. Be careful if using FileZilla to transfer with automatic mode selection. It will corrupt all attachment and avatar images unless you specify binary mode, read this note for more details.
  3. Spot check your restored files, especially attachments and avatars, that they survived the round trip, especially if you use FileZilla.


Advertisement: