I am having an issue with Magento Data Upgradation. I need your suggestions for best possible way to achieve the following

  1. How can I upgrade Magento with older version to newer version with LIVE data ?

  2. How I can I upload my changes on LIVE Server with ZERO Downtime ?

Please do not downvote or mark this as duplicate, because I have searched many forums and could not get the best feasible solution/way to achieve the above functionality.

  • This may be viewed as spam, (but it isn't). I strongly recommend you MageFlow: mageflow.com. It's not free, but it's a great way to move data between your magento instances. (and much more).
    – Marius
    May 23, 2014 at 6:11
  • @Marius this is something product based, while I am looking for a traditional solution.
    – Mark
    May 23, 2014 at 6:14
  • 1
    I know. But a product solution is better that 'no solution'. I don't have a 'traditional' one
    – Marius
    May 23, 2014 at 6:18
  • You need to give more information than this. A site with 500k order and 1mil skus is going to take along time to upgrade compared to a site with 1 order and 2 skus. Jun 3, 2014 at 22:17

4 Answers 4


rather easy

  • set up a dev environment
  • build a script that moves your live database to dev environment with one command
  • my god i hope you are using git to manage your code :)
  • if not then add your live site to git
  • create a dev branch of your site in dev
  • disable all custom extensions and switch on to default theme
  • upgrade away , should go flawless on defaults
  • enable extensions one by one and theme, fix as you go
  • and do all this as a repeatable script (that executes previous steps ) , rinse and repeat to iron out mistakes

so now you are in a place when you can hit the script that:

  • clones live db to dev
  • disables all extensions
  • disables theme
  • upgrades
  • enables extensions
  • enables theme
  • check out your fixed code for new version = you are upgraded

and now this should be fairly quick taking 2 - 5 minutes when scripted (leave out the data copying as you don't need to copy this on live)

  • put your site to maintenance mode (for 2 -5 minutes)
  • checkout your development code and merge, rebase to live
  • execute your script on live
  • take down the maintenance mode
  • $$$$$$$$$

The best approach which comes in my mind:

  1. get a second server
  2. get a copy of the database
  3. upgrade the new database with the new magento version
  4. change the DNS
  5. migrate the orders from the old to the new system

The alternative is to run the migration scripts on the live database, which might work or not and hopefully the result is backwards compatible, so you can work with a NEW magento (which is not public accessable) on the same database as your old magentos. Then you don't have to migrate the orders, just switch to the new magento version and turn off the old server(s).

But whatever way you choose, test, test, test.


You are never going to have ZERO down time unless you want to re-enter or sync order data. The problem you are facing is that the database will take time to upgrade. The above answer from Fabian or Anton are great solutions but you either face re-entering order data or you will have to setup a flag while the site is upgrading. We have upgraded sites that are getting 3000 orders a day (1.3 -> 1.11) and we brought the site down during the upgrade. Any site can expect some maintenance and it will depend on the version to version, the number orders and the general size of the database to determine how long your down time will be.


This is somewhat a difficult task but it is still possible. I'd suggest the following procedure.

  1. Purchase/source another server which is capable of running the new version of the site (you could also create a new virtual host on the server for this)
    • Point a sub domain such as new.domain.com
  2. Place the entirety of the current site within git or svn
  3. Pull the site onto either:
    • Local development environment
    • Or the new other server/virtual host you setup in step 1
  4. Conduct the upgrade to the new version whilst leaving the original live server alone
  5. Once the update is completed push the newer version of the site into the repo
  6. Setup the new version of the site on the new server
    • Pull the code to the server
    • Upload the database to the server
    • Connect the two together
    • Verify the system is working on new.domain.com
  7. Open up the original source code and implemented code in the index.php to redirect everything through to new.domain.com
  8. Point the original domain.com to the new server or virtual host

Depending on whether you have to wait for the name servers to propagate your site may run on subdomain for a short period of time but once everything moves over you'll in essence of had no downtime.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.