VaultPress Is Awesome
A few months ago, I was researching WordPress backup services for a client of mine. VaultPress came up in many searches. I really liked the fact that they offered real-time backup; not daily, not hourly, but real-time. Their system is notified of any change that occurs in the database and is instantly backed up.
Pretty bomb if you ask me. Even cooler is that you can drill down to a specific hours backup and restore an entire site, a specific file or folder or even a specific database table. Talk about robust and feature rich with great usability.
So fast forward to this week. My clients wanted to test and document what it would take to do a restore from a catastrophic server failure. Another forward thinking feature of VaultPress is the ability to restore to an alternate site. This proved to be invaluable to test out their service. I simply created a test restore site on my clients VPS and well, as you might have guessed, restored the site.
The restore went very smooth… until I verified the data.
My clients site is a WooCommerce site with tens of thousands of orders and users. And the first thing I checked was that all the orders (and other mission critical data) were safe and sound. And yes all orders aside from that days orders were fine. Roughly ten orders had no order items. I had the orders but no information about what those users purchased. I compared with the production site and sure enough those orders had order items.
Red flags were going off. What’s going on here?
I had to verify these findings. So I ran the restore two more times and each time the most recent orders had no order items. I needed to get to the bottom of this.
After some backup and forth with VaultPress’ support staff the issue lies in how often they back up non-WordPress core tables, such as custom plugin tables. Simply put, orders are backed up in real-time, but the actual orders items are only backed up once a day. From the horses mouth:
“Please note, though, that plugin tables are only indexed (and backed up) once per day, so you might have to wait 24 hours to see the order items appear in them.”
To get geeky and for those interested, WooCommerce stores master order records in
wp_posts, while order items are stored in
wp_woocommerce_order_items. Since the later table is backed up only once a day, using VaultPress you’re guaranteed to have data loss.
To reiterate this isn’t limited to WooCommerce. Any plugin using custom tables will suffer from this issue.
High Horse (Sorry)
The nature of this issue is bothersome as it’s an incomplete picture of your database. It’s not only data loss (in the event of a catastrophic failure), but it’s a mix match of data from different moments in time. So my question is: can VaultPress really claim real-time? If you’re talking about WordPress core tables, then yes it’s real-time. But it’s really not because custom plugin tables are so prevalent. I suggested VaultPress to my clients in good faith only to find we were at risk the whole time.
Every situation is different. If you’re not using any plugins with custom tables, then you don’t have to worry. If you are and a full backup of your site every 24 hours is sufficient then keep on chugging. Otherwise it might be good to research another solution or service. It’s just that VaultPress is such a well built service that I don’t want to go anywhere else. At least they are aware of the issue and are working to solve it:
“However, as you mentioned, the restore inconsistencies arised because the WooCommerce plugin tables are only indexed daily. Our developers are working directly with WooCommerce (also a part of Automattic) to bring live sync to the WooCommerce tables. There is no definitive timeline related to this yet, but it is in the works!”