I think there are two unrelated issues here: 1 Choosing a primary key in a way which is probably unique - UUID is an acceptable approach. You can use it with SBR or RBR, provided the client app generates the UUID. If you happen to be calling the mysql function to generate it, then you need to use row-based replication.
Row-based replication is generally much better, so the only reason you'd want to use statement-based replication is backwards compatibility with a MySQL Trying to use multi-master replication breaks this assumption and will cause your application to enter unexpected (i.e. Normally impossible) states.
I think there are two unrelated issues here: 1. Choosing a primary key in a way which is probably unique - UUID is an acceptable approach. You can use it with SBR or RBR, provided the client app generates the UUID.
If you happen to be calling the mysql function to generate it, then you need to use row-based replication. Row-based replication is generally much better, so the only reason you'd want to use statement-based replication is backwards compatibility with a MySQL Secondly, you appear to want to do multi-master replication. IT WILL NOT WORK.
MySQL replication is extremely simplistic - it writes changes to a log, pushes them from one server to another, reading the log as needed. You can't do multi-master replication, because it will fail. No only does MySQL not actually support it (for arbitrary toplologies), but it also doesn't work.
MySQL replication has no "conflict resolution" algorithm, it will simply stop and break if a conflict is discovered. Even assuming that your database contains NO UNIQUE INDEXES except primary keys which are allocated by UUIDs, your application can still have rules which make multi-master fail. Any constraints, invariants or assumptions within your application, probably only work if the database has immediate-consistency.
Trying to use multi-master replication breaks this assumption and will cause your application to enter unexpected (i.e. Normally impossible) states.
Thanks for your answer. So I understand from your comments that replication with MySQL is only limited to 'read-only' replication, where updates can only be done on one server, then distributed to 'read-only' servers. It sounds to me like a major limitation to the use of this server.
How do MySQL users manage with this limitation? – Philippe Grondier Nov 12 at 14:47 Typically by only writing to the master; they either asynchronously queue writes (to achieve high availaibility) or tolerate the master being the only place to do writes. In practice this is not a major limitation.
Multi-master replication can only work with MySQL in very limited circumstances, not suitable for general-purpose use (e.g. The application has been very specifically designed to tolerate multi-master situations). As I said, there is no replication conflict resolution, so the only solution is to have no replication conflicts, which in practice means write-in-one-place-only. – MarkR Nov 12 at 22:38 Do you have any references or documentation about databases designed for multi-master replication?
There are no add-ons available in the market for conflict resolutions? – Philippe Grondier 2 days ago.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.