Disk Utility.app will always erase the drives when creating a mirror.
The solution is to use the command line to convert the old drive to a degraded mirror (e.g. a mirror with only one disk), which you can then 'repair' by adding the second disk in (either via the command line or the GUI).
Start off in the terminal by getting a list of all your disk devices via:
diskutil list
This will show each disk along with its device id, such as:
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID
partitionscheme *500.1 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS My Mac 499.8 GB disk0s2
You'll have one such block for each disk. Once you identify which disk is the 'old' disk that you want to retain the data on you can use
diskutil again. For example, if the disk was disk2 you would:
diskutil enableRAID mirror disk2
This will convert disk2 into a degraded RAID mirror volume without destroying its contents. If you run
diskutil list again you'll see a new RAID device has been added.
If you're comfortable enough in the command line you can 'repair' the mirror by adding the second drive in:
diskutil addToRAID member disk3 disk4
The above command will add
disk3 as a new member of the RAID volume
disk4 (which was created as a result of the
enableRAID command).
One caveat - the syntax of various
diskutil commands has changed over the OS versions - some versions want disk IDs (e.g. 'disk1', 'disk2'), some want slices (e.g. 'disk2s2' as taken from the last column of
diskutil list), so don't be too concerned if the commands don't work exactly as I've posted them - I don't completely remember which OS version requires which format, nor know which version you're running.