We have been kicking about an idea where UAT can be tested with near live data (say maximum a week old). I strongly believe that development and QA environments should be in control of their own data, but UAT (the final tier before production) represents a bit of a grey area. So my questions are:
a) is this a good idea? I think so, but have nagging doubts.
b) if so, what are some proven techniques that people have used in the past?
(assuming that OP intended continual, real time schema and data synchronization)
Short Answer:
Rationale
By 'mirror' I'm assuming that you don't mean real-time direct mirroring or replication (UAT testing typically requires painstaking data test cases to be set up which would get overwritten).
Here's how we do it in a corporate environment, FWIW (Our environments are Dev -> QA -> UAT -> Prod)
At defined intervals, at usually approximately 1 month intervals
Some other considerations
Just a note on the 'script' cycle to synchronise schemas - in our environments: