title: magento: database synchronization between production, staging & development
body: <p>I've been reading up today on database synchronization in Magento.</p>
  
  <p>One thing I am currently struggling with is what needs to be synced during development and during uploads to production. Now assuming that a batch of changes will consist of changes to the DB and code alike, below would be my understanding of a model workflow (I do not currently use a '<strong>stage</strong>' server so that is bypassed in this example):</p>
  
  <ol>
  <li>Sync <strong>dev</strong> DB from <strong>production</strong> DB</li>
  <li>Checkout working copy of code to dev machine</li>
  <li>Make changes and test them on <strong>dev</strong> server</li>
  <li>Accept changes and commit them to svn repository</li>
  <li>Touch Maintenance.flag on production server and prepare for upgrades <em>(this altogether eliminates sync issues from users interacting with live data that is about to change right?)</em></li>
  <li>Merge branches to trunk and deploy repository to production server</li>
  <li>Sync <strong>dev</strong> DB back to <strong>production</strong> DB and test changes</li>
  </ol>
  
  <p>So items # 1 &amp; 7 I don't fully understand when working with Magento:</p>
  
  <ul>
  <li>What needs to be synced and what doesn't?
  <ul>
  <li>It seems ridiculous to sync order and customer info to me so I wouldn't do it.</li>
  <li>I would want product schema and data synced though obviously, and any admin changes, module changes, etc. How to handle that?</li>
  </ul></li>
  <li>What about HOW to sync? (MySql dumps, import/export, etc)
  <ul>
  <li>Currently I'm using Navicat 10 Premium which has structure and data sync features (I haven't experimented yet but they look like a huge help)</li>
  </ul></li>
  </ul>
  
  <p>So I don't necessarily need specifics here (but they would help). More or less I want to know what works for you and how happy you are with that system.</p>