Is there any other way to keep my db and server DB in synch? especially considering that users will be posting new data all the time?
We have a large distributed team and editorial staff everywhere so deploying the database is not feasible.
To get around this we make extensive use of update functions. We have a module which has no real code, which we use for updating settings. Every time a developer makes a configuration change they write an update function in this module which when run will make the corresponding change on the other development DBs, staging and live.
There are issues, particularly with cross dependencies (if people write update functions in more than one module), and it can take time to code something that is a relatively minor change in the admin. Install profile api helps in this.
For example
function mysite_update_6000() {
install_include(array('user'));
$editor_rid = install_add_role('editor');
install_add_permissions(DRUPAL_ANONYMOUS_RID, array('do something'));
install_add_permissions($editor_rid, array('do something', 'administer nodes'));
return array();
}
Will add a role and assign some permissions to it. Doing this keeps all of the changes in the code so that you don't have to try to migrate and synchronise databases.
There is also a migration module which may help with this, it logs changes to tables and saves them to an update function. This is not to be confused with the drupal.org migrate module which is for content migration.
We have had some success, but also some issues with the features module, which can help with migrating features.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…