I personally use BackupBuddy (a paid solution, from iThemes.com).
For your scenario, you could install it on your local dev machine, and perform the following one-time actions:
- Add a one-time configuration for your server as a “Remote Destination” (including FTP/sFTP credentials and target directory).
- Copy an ‘importbuddy.php’ script to your remote server.
Then, whenever you want to migrate a new snapshot from your local machine to your remote server, you can with one click create a backup zipfile (either “Database Only”, or “Full” which also includes all files) and have it sent to your server.
On the server side, all you’d have to do is:
- Browse to the ‘importbuddy.php’ script and use its friendly wizard interface, making sure to choose “Delete database tables” in the “Advanced Options.” (The script automatically and properly handles search/replace, for serialized data as well.)
- Alternatively, if your local and remote environments are sufficiently “identical,” and you have BackupBuddy installed on the remote server as well, you should be able to simply perform a one-click “Database Rollback” within BackupBuddy — an operation that is usually used for backups made on that very same server.
For a non-paid alternative, I’ve heard good things about the “WP Migrate DB” plugin, although I have not used this myself.