Mnemosyne has a built-in sync mechanism to sync your learning data between different machines. It supports an unlimited number of machines, and adding cards on one machine while reviewing cards on another machine will not result in a conflict and will be seamlessly merged. The sync protocol has been heavily optimised, and is much more efficient than e.g. putting everything on Dropbox.
To enable syncing, pick one machine as your server (e.g. your desktop computer). On that machine, go to 'Settings - Configure Mnemosyne' and in the 'Sync server' tab, activate the sync server and pick a username and a password that the client should provide. After clicking 'OK', Mnemosyne will tell you on which IP address the server is running, e.g. 192.168.2.33 . Everytime you want to sync another machine with your server, Mnemosyne needs to be running on that server. (Note: if you want to run the sync server on a headless machine, i.e. without a UI, start Mnemosyne from the command line with the --sync-server argument).
For the initial sync, if you're on a desktop client, make sure you start from an empty database which has the same name as the server database. (For Android, the initial sync will fetch the database currently active on the server, which cannot be changed later on.) Then, choose 'File - Sync' and fill in the server address (e.g. the IP address you got above), username and password. The initial sync can take a long time, as the entire database needs to be sent across, but future syncs will be much faster. Note that both the client and the server should be running the latest version of Mnemosyne.
First try the setup above with two computers on your home network, and make sure it works there. If you also want to use e.g. a server on your home network and a client at work, you will probably need to configure your internet router at home to forward the port Mnemosyne uses (by default 8512) to your server. Consult your router documentation for this.
If for some reason you can't or don't want to use Mnemosyne's built-in sync mechanism (e.g. because you can't keep your server running all the time), alternatives like Dropbox work (in combination with starting Mnemosyne with the
-d <datadir> option to set a custom datadir), but will be less efficient. However, make sure you sync the entire Mnemosyne data directory, and not just the database file itself, otherwise the statistics you submit to the science server will get confused. Also, make sure that you don't leave two copies of Mnemosyne running at the same time on different machines, as this will corruption and issues with the science log upload.