You are here
Upgrade from Galera Cluster 2.x to 3.0
Table of Content
- Introduction
- Prerequisites
- Upgrade the first node
- Rolling upgrade the other nodes
- Get rid of old release option
Introduction
Codership announced from weeks ago introducing the Galera Cluster new release 3.0 having many bug fixes, performance enhancements plus the main purpose which is working with MySQL 5.6. In this article, I'll go through the upgrade steps from Galera 2.x to the new release 3.0, but at the time of writing this article - as mentioned in the Codership release notes - THIS IS A BETA QUALITY RELEASE FOR TESTING PURPOSES. NOT RECOMMENDED FOR PRODUCTION YET.
Important note: a new Galera version (3.1) will be available soon for production and it will be INCOMPATIBLE with this beta version (3.0) but still compatible with 2.x, so again DO NOT go for production using 3.0 and postpone the production upgrade process until 3.1 become available.
Prerequisites
System information
The following are the cluster system information:
- Operating System: CentOS release 6.4 (64 bit)
- Cluster system consists of 3 cluster nodes (192.168.1.251 "gcservera",192.168.1.252 "gcserverb" & 192.168.1.253 "gcserverc")
Installed packages
The following are the packages installed on the three cluster nodes:
- MySQL version: mysql-5.5.33_wsrep_23.7.6 (RPM)
- Galera provider version:galera-23.2.7 (RPM)
mysql> show global variables like'%version%'; +-------------------------+--------------------------------------------------+ | Variable_name | Value | +-------------------------+--------------------------------------------------+ | innodb_version | 5.5.33 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.5.33-log | | version_comment | MySQL Community Server (GPL), wsrep_23.7.6.r3919 | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+--------------------------------------------------+ 7 rows in set (0.03 sec)
Required packages
The following are the needed packages to be installed:
- MySQL 5.6 + Galera plugin: Could be downloaded from here.
- Galera provider 3.0: Could be downloaded from here
Upgrade the first node
Upgrade the installed binaries
To upgrade the installed binaries, you have to stop the mysqld first.
Important: If you are using a load balancer in your cluster system, you should bring the node in question out from the load balancer before stopping the mysqld.
[root@gcservera ~]# /etc/init.d/mysql stop
And then, upgrade with the binaries:
[root@gcservera ~]# rpm -U /downloads/galera-24.3.0-1.rhel6.x86_64.rpm[root@gcservera ~]# rpm -qa|grep MySQL MySQL-server-5.5.33_wsrep_23.7.6-1.rhel6.x86_64 MySQL-client-5.5.34-1.el6.x86_64 [root@gcservera ~]# rpm -e MySQL-server-5.5.33_wsrep_23.7.6-1.rhel6.x86_64 [root@gcservera ~]# rpm -ivh /downloads/MySQL-server-5.6.13_wsrep_24.0-1.rhel6.x86_64.rpm Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%]
Upgrade mysql schema
It's recommended to perform the mysql schema upgrade before joining the cluster, so that, we need to start the node first as a standalone instance by disabling the provider option:
#my.cnf
[mysqld]
.
.
#wsrep_provider=/usr/lib64/galera/libgalera_smm.so
Then start the instance and perform the upgrade using the mysql_upgrade utility:
[root@gcservera ~]# /etc/init.d/mysql start
Starting MySQL........... SUCCESS!
[root@gcservera ~]# mysql_upgrade
Prepare the node to join the cluster
All running nodes (second and third nodes) are using the old galera version (2.7) at the moment, so that a backward compatibility option (wsrep_provider_options="socket.checksum=1") MUST be added in the node's configuration in order to join the cluser, otherwise, it will fail to join it back.
Also don't forget to enable again the provider option:
#my.cnf
[mysqld]
.
.
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_provider_options="socket.checksum=1"
Joining the cluster
Now we are ready to join the cluster by restarting the node
[root@gcservera ~]# /etc/init.d/mysql restart Stopping MySQL........... SUCCESS! Starting MySQL........... SUCCESS!
We can check the new version as follows:
mysql> show global variables like'%version%'; +-------------------------+------------------------------------------------+ | Variable_name | Value | +-------------------------+------------------------------------------------+ | innodb_version | 5.6.13 | | protocol_version | 10 | | slave_type_conversions | | | version | 5.6.13-log | | version_comment | MySQL Community Server (GPL), wsrep_24.0.r3937 | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+------------------------------------------------+ 7 rows in set (0.05 sec)
And the cluster status as well:
mysql> show global status like'wsrep%'; +----------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------+--------------------------------------+ | wsrep_local_state_uuid | ac53dc1e-3aff-11e3-b970-eb7044f6dc77 | . . | wsrep_local_state_comment | Synced | . . | wsrep_cluster_size | 3 | | wsrep_cluster_state_uuid | ac53dc1e-3aff-11e3-b970-eb7044f6dc77 | | wsrep_cluster_status | Primary | | wsrep_connected | ON | | wsrep_local_index | 2 | | wsrep_provider_name | Galera | | wsrep_provider_vendor | Codership Oy
| | wsrep_provider_version | 24.3.0(r159) | | wsrep_ready | ON | +----------------------------+--------------------------------------+ 43 rows in set (0.13 sec)
Important: if you are using a load balancer in the cluster, it's now the time to add this node back again to it.
Rolling upgrade the other nodes
You can start doing the rolling upgrade to the other nodes the same like the first one but after making sure that all nodes state (wsrep_local_state_comment) is Synced. If you stopped a node while it's in the Donor state, then the donor and the joiner nodes might be crashed, so make sure of that first.
Get rid of the old release option
After making the upgrade on all the cluster nodes, the backward compatibility option (wsrep_provider_options="socket.checksum=1") is not needed anymore, so removing it from the configuration files and doing a rolling restart on all nodes will do the mission.
Have fun with the new MySQL and Galera releases :)
- abdel-mawla's blog
- Log in or register to post comments
Comments
Galera 3.1 is now Released