When you upgrade an online group, you might need to run different versions of MySQL on members in the group at the same time. Depending on the changes made between the versions of MySQL, you could encounter incompatibilities. For example, if a feature has been deprecated between major versions then combining the versions in a group might cause members which rely on the deprecated feature to fail. This section describes the best practices for combining members running different versions of MySQL in the same group.
Group Replication is versioned according to the server version which the plugin was bundled with, for example if a member is running MySQL 5.7.19 then that is the version of the plugin. This version number is critical when upgrading a group, and specifically at the time of joining members to a group. See Section 2.1.1, “Which MySQL Version and Distribution to Install”.
To check the version of MySQL on a group member issue:
SELECT MEMBER_HOST,MEMBER_PORT,MEMBER_VERSION FROM performance_schema.replication_group_members; +-------------+-------------+----------------+ | member_host | member_port | member_version | +-------------+-------------+----------------+ | example.com | 3306 | 8.0.13 | +-------------+-------------+----------------+
The rules for combining members in a group with different major versions are:
You cannot join a member to a group when it is running an older major version than the major version which the existing group members are running. For example if you have a group with members running MySQL version 8.0, you cannot add a member which is running an older version such as MySQL version 5.7.
You can join a member to group if it is running a newer major version than the major version which the existing group members are running. For example if you have a group with members running MySQL 5.7, you can add a member running MySQL version 8.0, but it remains in read-only mode. Writing to this member while there are read-write members running an older MySQL version is dangerous and must be avoided.
The rules for combining members in a group with different minor versions are:
You can add members running a newer or older minor version to a group, they are able to do writes. In a single-primary group, added members default to being read-only.
A replication group uses a Group Replication communication protocol version that can differ from the MySQL Server version of the members. To check the group's communication protocol version, issue the following statement on any member:
The return value shows the oldest MySQL Server version that can
join this group and use the group's communication protocol.
Versions from MySQL 5.7.14 allow compression of messages, and
versions from MySQL 8.0.16 also allow fragmentation of messages.
Note that the
UDF returns the minimum MySQL version that the group supports,
which might differ from the version number that was passed to
UDF, and from the MySQL Server version that is installed on the
member where you use the UDF.
When you upgrade all the members of a replication group to a new
MySQL Server release, the Group Replication communication
protocol version is not automatically upgraded, in case there is
still a requirement to allow members at earlier releases to
join. If you do not need to support older members and want to
allow the upgraded members to use any added communication
capabilities, after the upgrade use the
UDF to upgrade the communication protocol, specifying the new
MySQL Server version to which you have upgraded the members. For
more information, see
Section 22.214.171.124, “Setting a Group's Communication Protocol Version”.