18.104.22.168 Single-Primary Mode
In this mode the group has a single-primary server that is set to read-write mode. All the other members in the group are set to read-only mode (with
super-read-only=ON ). This happens automatically. The primary is typically the first server to bootstrap the group, all other servers that join automatically learn about the primary server and are set to read only.
When in single-primary mode, some of the checks deployed in multi-primary mode are disabled, because the system enforces that only a single server writes to the group. For example, changes to tables that have cascading foreign keys are allowed, whereas in multi-primary mode they are not. Upon primary member failure, an automatic primary election mechanism chooses the new primary member. The election process is performed by looking at the new view, and ordering the potential new primaries based on the value of
group_replication_member_weight. Assuming the group is operating with all members running the same MySQL version, then the member with the highest value for
group_replication_member_weight is elected as the new primary. In the event that multiple servers have the same
group_replication_member_weight, the servers are then prioritized based on their
server_uuid in lexicographical order and by picking the first one. Once a new primary is elected, it is automatically set to read-write and the other secondaries remain as secondaries, and as such, read-only.
When a new primary is elected, it is only writable once it has processed all of the transactions that came from the old primary. This avoids possible concurrency issues between old transactions from the old primary and the new ones being executed on this member. It is a good practice to wait for the new primary to apply its replication related relay-log before re-routing client applications to it.
If the group is operating with members that are running different versions of MySQL then the election process can be impacted. For example, if any member does not support
group_replication_member_weight, then the primary is chosen based on
server_uuid order from the members of the lower major version. Alternatively, if all members running different MySQL versions do support
group_replication_member_weight, the primary is chosen based on
group_replication_member_weight from the members of the lower major version.