I guess that this is one of the most common problems that developers face. Version 1 of the website was released way back when so users and data have been added to the live site, but we have all this new stuff sitting in the staging site that we want to transfer to live without breaking live or losing data.
Most people try to do this the wrong way around. Following the steps below is the simpliest solution that I have found:
1) Take a copy of the tables in the live site that relate to users, nodes, comments and cck fields - making sure in particularly that you get every table with a nid, uid or cid - this is where all the new user input data is held - export it to SQL using phpMyAdmin or some similar tool - I prefer the bash prompt myself
2) Take a backup copy of your live database
3) Take a copy of the staging database - this is where all the new configuration sits
4) Import the SQL files into your copy of the staging site
5) Push the new database to live
6) Complete your testing
7) Drink beer
This works best because we know which tables have been altered by user input, rarely will we have a complete record of all the configuration changes that we have made.
Comments
Starting from 7) is a quite
Starting from 7) is a quite common mistake. :)
Staging and live
Posted here http://groups.drupal.org/node/181589#comment-731384 on this topic, wondering if anybody would support creation of a new group on g.d.o. ?