When I first started working with Magento I thought moving a magento installation with lots of data from one server to another wont be easy considering the db size is very big and the codebase is not small either.
I was a noob at linux server’s stuff then, I am not good at all now, but I have become better than before. And after moving several Magento installations around, creating development sandboxes from live data with large databases like 4GB+ I do think with some terminal kungfu you can pretty easily move magento from one server to another. The method I will show will required
ssh access to both servers.
I will walk you through step by step,
Exporting the current Magento Database
To export the current database magento is using, first
ssh into the server and then find the database config from magento config file located at
app/etc/local.xml . In that file you will see a connection node like following
1 2 3 4 5 6 7 8 9 10 11
So you have DB access to export the database magento is using. You can use
mysqldump to dump the database using the following command:
It will prompt you for password and after you provide that it will start dumping the database into the file you specified. It can take time depending on the amount of data you have in your magento store. Like in my case it took quite some time to export a database of size around 4GB. Once done, you will get a uncompressed sql file whose size can be reduced easily. As it’s a text file it’s compression ratio will be good and you should get a file much smaller in size. You can compress it using
Moving the database into the new server
If it’s a very big dump then you should be using
scp (Secure Copy over ssh) to save yourself time. That would reduce the step of downloading it in your local machine first and then re upload into the new server. If you have
ssh access of the new server then you should definitely try to use
scp . For that login into the old server where you have the exported database dump then run a command like
It will copy the database over to the new server in no time, in server’s internet speed which is high in most cases.
You can copy the magento codebase the same way over to the new server.
Importing the database into the new server
untar the copied database into it’s original
.sql format. Use the following command,
After this step you will have a file named
EXPORT_FILENAME in the current directory you are in.
Create a new database in the new server either from command line using
mysql cli or from
cpanel or any kind of database administration tool and then
ssh into the new server. Then you can import the copied database dump into the newly created database using the following command,
It will ask for password, will take some time and eventually import the database into the new server.
Updating Database config in Code and base url in database
Like I said copy over the magento codebase the say way with
scp or in any other way you want. Now update the database config in
You also have to update the
core_config_data table of magento which it uses internally to render links throughout the site. Load the
core_config_data table into any database browser like
Sequel Pro or
PHPMyAdmin . You will see that table has a column named
path . Search for path values of
web/secure/base_url and replace the value which is of the old site with the new web root of your magento installation you copied a while ago.
As you may have guessed from the path names
base_url means what they should mean and they are the
https urls of your new magento home.
You can now load the new url in browser and it should load the new site. If it doesn’t then you might have to clear the cache of the site. The
cache directory is in
app/var/cache . Remove the contents of that directory and you should be done. You could remove the contents of that directory from command line using the following command too
If you still face any problem in loading the new site then you should try to debug the specific problem you are having. Thats all for today. Enjoy!