MySQL Blog Archive
For the latest blogs go to blogs.oracle.com/mysql
Configuring the communication protocol in Group Replication

In a previous blog post we presented the message fragmentation functionality that you can use starting with MySQL Group Replication 8.0.16.

No group member can have a version < 8.0.16 if you wish to use message fragmentation in a group. MySQL 8.0.16 also ships with a new Group Replication concept to help you ensuring backwards compatibility: the group’s communication protocol.

The communication protocol of a group is the oldest MySQL version you wish your group to support. A MySQL server with version X can only join and become ONLINE in a group if the group’s communication protocol is ≤ X.

You can manage a group’s communication protocol using two new UDFs: group_replication_set_communication_protocol(new_protocol) and group_replication_get_communication_protocol().

  • group_replication_set_communication_protocol(new_protocol): Sets the group’s communication protocol to new_protocol. You can only change the group to a communication protocol that all members support, i.e. new_protocol ≤ MySQL version of all members. new_protocol must be a string in MySQL version’s major.minor.patch format, e.g. 8.0.15.
  • group_replication_get_communication_protocol(): Returns the communication protocol active in the group. The result is a string in MySQL version’s major.minor.patch format.
  • Both UDFs affect the entire group as a whole, and they can be executed on either a PRIMARY or SECONDARY.

MySQL 8.0.16 introduces the first new group communication protocol feature (message fragmentation) since MySQL released Group Replication. Communication protocol 8.0.16 compresses and fragments messages. Prior communication protocols, i.e. < 8.0.16, only compress messages. Therefore, setting the group communication protocol to, for example, 8.0.15, makes the group compatible with all MySQL versions up to, and including, 8.0.15. In other words, when you execute…

…you are stating that you want your group to at least support members running MySQL 8.0.15. But if supporting MySQL 8.0.15 is the same as supporting MySQL 5.7.14, then your group will support members running MySQL 5.7.14. And indeed, if you execute…

…after having stated that you want your group to at least support members running MySQL 8.0.15, you will see that the group’s active communication protocol is 5.7.14.

This is the semantics that the group communication protocol provides. You use the group_replication_set_communication_protocol(X) UDF to state that you wish your group to at least support MySQL version X. If supporting MySQL version X is the same as supporting an older MySQL version Y < X, then your group will support MySQL version Y. You can see the actual oldest version your group supports using the group_replication_get_communication_protocol UDF.

Conclusion

MySQL 8.0.16 is publicly available and with it come improvements to Group Replication. In particular Group Replication now has the notion of the group’s communication protocol. You can specify the oldest MySQL instance you wish your group to support using the group_replication_set_communication_protocol(new_protocol) UDF. You can also inspect which is the oldest MySQL version a group currently supports using the group_replication_get_communication_protocol() UDF.