最近由于数据库迁移合并原因,导致集群数据库版本不兼容现有数据库,因此打算升级MySQL集群数据库版本从5.5升级到10.4
硬件信息:CentOS Linux release 7.5.1804 (Core)
主数据库:172.16.116.40
从数据库:172.16.116.42、172.16.116.43
MySQL集群的搭建可以参考:CentOS7.5实现MySQL集群-主从服务器搭建(一主多从)
安装
安装过程在各个主从节点中都需要执行,安装前记得先备份数据库
修改存储器配置,以便系统软件包管理器能够正确安装MariaDB10
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
登录到数据库设置innodb_fast_shutdown到0。可以使用SET GLOBAL进行动态更改,
- 设置为0:会做清除脏页和插入缓冲区的合并操作,也会将脏页全部刷新到磁盘上面去,但是这个时候关闭的速度也是最慢的,此时数据完整性能得到最大保障
- 设置为1:关闭MySQL的时候不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘
- 设置为2:不会做清除脏页和插入缓冲区的合并操作,也不会将脏页刷新到磁盘,但是会刷新到redo log里面,再下次启动mysql的时候恢复
mysql -uroot -p # 登录数据库 SET GLOBAL innodb_fast_shutdown=0; # 设置innodb_fast_shutdown SHOW GLOBAL VARIABLES LIKE '%innodb_fast_shutdown%'; # 查看innodb_fast_shutdown
停止MariaDB
systemctl stop mariadb # 关闭mariadb systemctl status mariadb # 查看mariadb状态
卸载旧版本MariaDB
sudo yum remove MariaDB-server
安装新版本的MariaDB,中途提示选y
sudo yum install MariaDB-server
此时集群相关的依赖程序(Galera wsrep)也会被安装
启动MariaDB,然后执行mysql_upgrade,此时需要选择--skip-write-binlog选项
- 确保mysql数据库中的系统表与新版本完全兼容
- 快速检查所有表并将其标记为与新版本的MariaDB兼容
systemctl start mariadb # 启动mariadb mysql_upgrade --skip-write-binlog --force -uroot -p # 执行mysql_upgrade
此时系统会自动执行以下几个步骤,等待执行完成就好:
Checking and upgrading mysql database
Running 'mysql_fix_privilege_tables'
Fixing table and database names
Checking and upgrading tables
Running 'FLUSH PRIVILEGES'
至此集群升级安装已完成,更多系统版本升级可参考:Upgrading from MariaDB Galera Cluster 5.5 to MariaDB Galera Cluster 10.0
恢复主从节点工作
在主服务器进入mysql,查看主节点状态,记住File和Position
show master status;
在从服务器进入mysql,停止并重置从节点,然后在从节点中配置主节点信息(保险每个从节点中都进行一下)
stop slave; # 停止从节点 reset slave; # 重置从节点 CHANGE MASTER TO -> MASTER_HOST='172.16.116.40', # 主服务器ip -> MASTER_USER='master', # 主服务器上创建的用户 -> MASTER_PASSWORD='你配置的主服务器密码', # 密码 -> MASTER_LOG_FILE='mysql-bin-40.000001', # 为master中的二进制日志文件,刚刚记住的File -> MASTER_LOG_POS=565; # 刚刚记住的Position