我有3节点的MariaDB 10.3 Galera集群(Ubuntu14.04),我想将它升级到MariaDB 10.4 Galera集群(Ubuntu18.04)。
根据https://mariadb.com/kb/en/library/upgrading-from-mariadb-103-to-mariadb-104-with-galera-cluster/滚动升级是可能的(显然,我需要尽可能少的停机时间)。
我在dev集群上进行了滚动升级--我在集群中添加了新服务器(MariaDB 10.4),并删除了一台旧服务器(MariaDB 10.3)。重复,直到整个集群运行MariaDB 10.4。一切正常,看上去也很好。
问题是,在MariaDB 10.4中引入了新的身份验证mysql表。根据https://mariadb.com/kb/en/library/authentication-from-mariadb-104/,用户现在应该存储在mysql.global_priv
中。因为我做了滚动升级,myql
数据库从旧节点复制到新节点,所以现在集群中没有mysql.global_priv
表。用户仍然在mysql.users
表中。
另一个问题是,当我对MariaDB 10.4进行新的独立安装时,有具有这些特权的OS管理用户mysql@localhost
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION
这个用户不在升级的集群中(显然是同一个问题,mysql
表是从旧节点复制的),但是我不能创建这个管理用户来摆脱debian-sys-maint@localhost
。
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION;
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
因此,我的问题是,如何使MariaDB Galera集群从MariaDB 10.3中进行干净的滚动升级。使用在MariaDB 10.4中引入的所有新特性到MariaDB 10.4?任何帮助都将不胜感激。
发布于 2019-08-13 14:28:33
需要在任何升级中运行mysql_upgrade
。
https://dba.stackexchange.com/questions/245219
复制相似问题