MySQL master-slave replication, the default is asynchronous replication. Asynchronous replication, that is, when Master finishes the thing and commits, the binary log records these updates and then begins the next batch of things. Does not care whether these updates are copied from the top.
semi-synchronous replication, on the other hand, waits for at least one MySQL slave server to receive the master binary log before starting to execute the next batch of things. During this wait, if the primary and standby network fails or the standby is hung, the main library will continue after the transaction commits for 10 seconds (the default value of Rpl_semi_sync_master_timeout). At this point, the main library will change back to its original asynchronous state.
when After MySQL loads and opens the Semi-sync plugin, each transaction waits for the repository to receive the log before returning it to the client. If you are doing a small transaction and the latency of the two hosts is small, then Semi-sync can achieve zero data loss in the event of a small performance penalty.
MySQL Master difference from asynchronous and semi-synchronous