背景:
最近遇到mysql数据库集群部分节点无法登录问题,运行环境是k8s,mysql集群版是3个副本,每个副本挂载了本地pv,mysql挂载路径是/var/lib/mysql 。在宿主机节点全部掉电启动后,数据库集群有1个节点正常,其他2个节点健康检查0/1,事件信息
Readiness probe failed:mysqladmin:connect to server at ‘localhost’ failed
Error: ‘Access denied for user ‘incloudmanager’@’localhost’(using password:YES)’
比较奇怪的是在排查信息时发现:
wsrep_cluster_size:3
wsrep_local_state_comment: Synced
wsrep_incoming_addresses: mysql-2,mysql-1,mysql-0
而且异常数据库节点启动日志未见error
尝试了几种处理方法:
1)排除密码错误:修改statefulset.yml中密码,无效
2)修改statefulset 的配置参数:无效
env:
- Name MARIADB_EXTRA_FLAGS
- Values: -init-file=/docker-entrypoint-initdb.d/setprivileg
3) 修改statefulset.yml的配置参数:Readiness delaysecond 延长时间 无效
4)修改statefulset.yml中将副本改为1,然后删除其他的pvc ,最终导致单副本也无法使用
从现象上看就是异常数据库节点无法通过用户密码的校验。而数据库登录的用户密码存放在mysql数据库user表中。数据库节点都挂载了pv,是不是pv里的user表出现了异常?因此把正常节点1挂载的pv的里的user表相关文件拷贝到其他2个异常节点所挂载的pv路径下。文件内容:
user.frm
user.MYD
user.MYI
然后重启异常的两个数据库节点,通过了健康检查。状态变为1/1
登录权限问题解决后,出现数据库节点之间同步出现问题?很奇怪~
需要有经验的大佬批评指正。