My company is trying out a new product called Delphix.
We have had Delphix installed for about a month and I wanted this post to contain my first impressions for others who may be considering it. Essentially Delphix provides fast copies of databases so that a terabyte database can be refreshed in minutes. My most recent example took three minutes for a development db that is just over one TB.
Delphix is an appliance running Open Solaris that runs in a VMWare ESX virtual machine. At least, that is how we have it installed. You license Delphix by the number of CPUs in the virtual machine so you can use it as much as you want as long as the CPUs can handle it. Your database file systems are connected to the Delphix appliance using NFS. So, the critical component of Delphix is the network connection between your target database servers and the appliance. In our case we put new 10 gigabit ethernet hardware in to connect our HP-UX Itanium virtual machines (target database servers) to the Delphix vm. We made sure they were all on the same IP subnet with nothing but a nice high speed switch between them all. After some initial testing Delphix’s performance and support teams made some network configuration changes that helped with an initial performance/hang issue. Looks like it may have something to do with the packet flow control within TCP/IP but it works fine now.
The Delphix appliance uses RMAN to pull data from a source database. The source database has to be in archivelog mode and for best performance you need to enable block change tracking. Delphix does an initial full level 0 backup and then regular incremental level 1 backups. To create a new clone copy of the original database you pick one of these incremental backups – called snapshots – and point to the target machine and Delphix automatically mounts the appropriate NFS filesystems with the datafiles, tempfile, redo logs, etc. and brings up a clone of the source system with the new name you designate.
Also, Delphix takes snapshots of the clone databases – called VDBs – on a regular basis so these can be used as backups of the clones themselves and you can clone the clones – sounds like Star Wars Clone Wars doesn’t it?
One interesting challenge is space management. Each new clone takes up very little space – until you start updating it. I did some tests where I copied a 30 gig table to a new table and the vdb which previously took less than 100 megabytes of space now took gigabytes. Everything is compressed so I think it was less than half of the 30 gig but the point is that the more the copies get updated the more disk space you need for the copies. If you have an application that needs copies quickly but the copies aren’t heavily updated you can make many copies with very little disk space. I think this kind of capability opens up all kinds of possibilities we haven’t considered before since each copy without Delphix would take up an equal amount of space as the original if you just use normal disk storage. I.e. Before Delphix we had to minimize the number of production copies we used for development and testing. Imagine how our processes might change if we can spin off a quick production copy, use it for a short while, and then get rid of it all with minimal additional disk space and with the clone occurring in minutes.
Right now I’m working with a Delphix consultant on a script that the developers can use to refresh their own database from the most recent snapshot of its source. Delphix has a couple of ways it can be controlled from a Unix shell script. One way is with ssh and their command line interface (CLI). You can setup ssh with a public and private key so you can ssh into the VM as the “delphix admin” user and then run a set of commands in Delphix’s proprietary language. Delphix also has a GUI but it is nice that you can run a script and do things like kick off a refresh or clone. Also, there is a web service and they gave me a sample Python script to communicate with the VM through the web service but I haven’t delved into it. For one thing, we don’t have Python installed on our HP-UX servers. You can access Delphix’s documentation online here including the CLI interface commands.
Well, I’m not trying to sell Delphix to anyone but I thought it would be good to put down some of my experiences. The database cloning and refreshing is remarkably fast. Time will tell how the network NFS performance holds out during heavy development and testing but assuming we manage that performance and the disk space usage I’m pleased with the remarkable clone times that are supported by the Delphix VM.