As Ipstenu pointed out, keeping the database in sync is difficult, especially if people are commenting on your live site while you are adding features and/or content to your dev site which is also modifying the database.
There are a few approaches to deal with it that I’m aware of:
 use the same database for both live and dev but be very very careful that any changes made to the database on your end won’t show up in the live site until it receives the code changes
 make an SQL script as you develop which records all changes made to the dev database. Then, as part of updating the site, you run the script on your database at the same time you push your code changes.
I’ve tried both approaches and for now I’m using the second. It’s a bit tricky if you are changing a table or field which is also being updated on live. What I’ve done in the past is make a parallel field with the new format or changes and make the code get and set both for a bit. Then, after the new code is uploaded, convert the previous format to the new format so that both columns are full and in sync, then delete the code that gets/sets the old field. Assuming everything works, delete that field entirely.
If anyone else has suggestions on sharing/syncing a database between live and dev, I’d be interested in hearing about it as well.