I obviously don't want to be making changes to a live store that is getting orders all day. So I have a development and staging servers setup. The problem is that by the time I have tested the latest changes and am ready to push the files and database to the live server, there have been multiple orders. I would lose all the orders and customers, as well as screw up order numbering.
I have read something about using GIT but don't know anything about that.
What is the right way to setup a development, staging and live server setup, so that changes can just be pushed to the live server while keeping any relevant database changes and not losing live data from the site.
Try reading this site: https://www.siteground.com/tutorials/git/
Ok, GIT is fine for file changes but it doesn't reference or manage the database changes at all.
How do I manage database updates and changes when the live server is changing constantly.
Anyone got a solution to this ? How are database updates synced between development, staging and live sites.
Did you ever find out how to do this?
Our developers document all the changes done to the files and database tables and implement those changes in production store with Git and manually apply MySQL changes to release a customization. Yes, it's a bit more work when just press some magic "Release" button and hope the live store will not go down on you but it's safe and easy to roll back the changes in case of a problem. It may not work for a large development company with dozens of developers working on the same project but we usually dedicate a single developer to work on a project from the beginning to the end or until front-end guy takes over and finishes the changes - after that, we implement the changes in the same order into production store at night during off-peak hours to minimize any downtime. Installations usually take 30-60 min and there is very little downtime during this even for the most "intrusive" customizations. We did this for years on multiple systems we support including Magento and never had a problem. The goal is to keep production store safe and running at all cost and not to save a few minutes of extra work for the developers. For us, "keep it simple" approach is the safest one.
Hope this helps.
The original question was to migrate files and database from staging to live. In release management, you would never replace the whole database of live site, to be clear. You would only update tables within the database and any code. And as mentioned document in detail or make a copy of the tables and code being affected. I prefer the term UAT versus Staging, staging to some developers means a step that in process where data may still be transformed.