No - not anymore! From SQLyog version 5.0 synchronization is possible without a Primary Key as well.
But it is recommended to use a Primary key when it is possible to do so, because
- without a PK you cannot UPDATE rows. Only INSERTs and DELETEs are possible. Non-existing rows on target that exist on source will be inserted and existing rows on targets that don't exixt on source will be deleted (if not 'never delete' is set). A row is identifed by its complete dataset
- it also reduces the complexity of the calculations that the client running the Synchronization tool need to perform.
But in some cases applications will only accept database schemas that have a very specific structure - a structure generated by the application itself. Sometimes adding a PK to the tables will cause the application to refuse working with the database.
Even in such and similar cases you can now use the SQLyog Synchronization tool.