We are planning to sync sitecore production data with our QA/DEV environment. But We do not want to take any risk with our production database. We are using TDS in our lower environment. What could be good approach to make our lower environment up to date?
If all your items on the Production environment are found on TDS, you can deployed them to your lower environments.
But if they are not, you can backup the Production databases (core, master and web) and restore them onto the lower environments. This is the approach I am using on all my Staging environments to keep them up to date with Production because on TDS, we have only test contents, templates, layouts/renderings and system item.
Then when we deploy our TDS to staging we set it not to delete items so the items from production will stay on the Staging environment with new items being installed.
Note that when you restore an environment database onto another one, you need to clear from core, master and web the
Event queue table
Because they still have the other environments details which can cause issues like events are out of sync.
You can also use RAZL from Hedgehog to sync the environments over your build system. RAZL uses XML scripts which you can use e.g. with Teamcity to sync it with your staging or dev environments.
Best regards Dirk
As the others have hinted, there are lots of different ways to pull down content from one environment to another. Each has there own positives and negatives. Another approach that hasn't been mentioned is the use of a module called the Sitecore Sidekick: https://marketplace.sitecore.net/en/Modules/S/Sitecore_Sidekick.aspx
Each server that you want to move content from and then to needs to have the Sitecore Sidekick installed in those environments. It provides an easy interface similar to Razl (except this is within the CMS itself) to select and migrate content.
Learn more on Jeff Darchuk's Blog to learn how to configure it for your specific environment.