I have learned more about Drupal from your podcast than anywhere else... thank you.
Have I buttered you up! o.k. good.... (it's still true)
One of the biggest questions I have yet to resolve (to my satisfaction) is working on a LIVE site... upgrading, adding features, testing new features, etc... I don't want to leave a site down for several days while I tinker with options... I want to install, config, test, then deploy new features (let's say a new module or two or even three), without taking my live site down for little or no time at all. And of course, there's no way I'm testing on a live site or my live data... I'm not that nuts :\
How do you do it?
Are there any Drupal trueisims for this process?
Have you heard of or used NaviCat (to sync databases)?
Does your production environment (DB) match your presentation environment (DB)?
Do you develop online (live www.mysupersweet.com, test wwwtest.mysupersweet.com)?
Do you move individual tables from the mysql database?
Maybe pause the site, download the DB, merge with your production DB, re-upload files and the new db?
What to do?
So many options, some not so pretty!
Geeks and God, can you help us!!! (o.k. a little dramatic but it was fun to type)
Thanks,
Sean







A Few Thoughts
First, when you are developing these new features always to it on a test site. It could be at test.example.com or on a local system. If you are getting into anything fancy try to do the testing on a server with the same versions of SQL, PHP, and Apache (or what ever software you are using). This can minimize issues that pop up because of software version differences.
I usually build out all the additional features in a test installation and create scripts to automate as much as possible.
Then comes the hard part... upgrading.
First, take your site offline. Don't modify a site when it's online because there will likely be a point in the update/change where visitors might see a wacky site.
Next, do a backup. Backup all your files and database to another location. If something goes wrong you want to be able to easily restore to the last point it worked.
Now, you enable the new modules or do the update. If you are just updating modules on the site I'd, also, read the text files that come with drupal that walk through the process. Never forget to run update.php.
During this step I'll often have automated scripts that make changes. They might be part of the update.php script or they might be one time only site specific changes to the data.
Then, turn the site back on.
This is my process and others may do it differently.
I don't try to keep my databases in sync. I make sure I have a solid representation of what I need on the development/test server. It's usually a snapshot of my production server. And, I would have a migration plan for the production server rather than trying to just move the test server to production. Especially for the data. If the production and test get out of sync before the switch you could have data loss for the users and that wouldn't be good.
Matt Farina
Geeks and God Co-Host
www.innovatingtomorrow.net
www.mattfarina.com
What about this...
- - - tried this - - - wasn't as great as it sounded in my head - - - leaving it here for reference and hopefully someone can find something better - - -
I was thinking of a way to do this, let me know what you think. (I am on a site with over 15,000 users, and 100+ online at any given moment), so backing up every step is crucial!
Copy the most current Db to Db#2
Copy the directory (drupal) to test.site.com
Link the two (settings.php)
Make upgrades (say D5.2 to D5.9) and install a new feature, on test.site.com, Db#2
Test, play, adjust, tweak, etc...
Take main site offline.
NaviCat (difference/merge) Db and Db#2 to NewDb.
Copy directory for test.site.com to www.site.com
change settings.php of www.site.com to point to NewDb.
Run update & cron
Bring it all back up.
My goal is as little down time as possible... but from your experience, is this any better? Could it even work?
Thanks,
Sean
- - - ANY GOOD IDEAS OUT THERE IN G&G LAND - - -