跳转至

其他故障

CR 创建数据库失败报错

数据库运行正常,使用 CR 创建数据库出现了报错,此类问题的原因有: mysql root 密码有特殊字符

image

  1. 获取查看原密码:

    [root@master-01 ~]$ kubectl get secret -n mcamel-system mcamel-common-mysql-cluster-secret -o=jsonpath='{.data.ROOT_PASSWORD}' | base64 -d
    
  2. 如果密码含有特殊字符 - ,进入 MySQL 的 Shell 输入原密码出现以下错误

    bash-4.4# mysql -uroot -p
    Enter password:
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    
  3. 清理重建:

    • 方法一:清理数据目录,删除 Pod 等待 sidecar running 以后,再删除一次数据目录,再删除 Pod 即可恢复:

      [root@master-01 ~]# kubectl exec -it mcamel-common-mysql-cluster-mysql-1 -n mcamel-system -c sidecar -- /bin/sh
      sh-4.4# cd /var/lib/mysql
      sh-4.4# ls | xargs rm -rf
      
    • 方法二:先删除 PVC,再删除 Pod,即可恢复:

      kubectl delete pvc data-mcamel-common-mysql-cluster-mysql-1 -n mcamel-system
      
      kubectl delete pod mcamel-common-mysql-cluster-mysql-1 -n mcamel-system
      

Note

使用以上方法清理重建将导致数据库被重置,数据丢失。

提示 The MySQL server is running with the read-only option so it cannot execute this statement

当在管理平台的操作中产生如下提示,说明 MySQL 节点主从关系发生变化,但平台其他模块没有及时转换连接对象,在只读从节点执行了写操作。

The MySQL server is running with the read-only option so it cannot execute this statement

image

解决方法:前往 容器管理 平台重启所有相关 replica

Operator 或者相关 MySQL 资源中出现错误码 1045

原因:磁盘性能太差,导致 MySQL 初始化被中断

当出现这个错误后,登录 MySQL,执行:

mysql -uroot

如果可以直接登录,很大概率是因为磁盘性能太差,导致 MySQL 初始化被中断。

临时解决方案

  1. 将 mysql-operator 这个 StatefulSet 缩容为 0
  2. 删除 MySQL 对应的 StatefulSet 里 MySQL 容器的 probe 探针
  3. 删除 MySQL 的 PVC
  4. 删除 MySQL 的 Pod,并等待 MySQL 重新初始化
  5. (待 MySQL 启动成功后),使用 mysql -uroot 登录 MySQL,查看是否可以登录。 如果无法登录,则说明 MySQL 初始化成功。
  6. 将 mysql-operator 这个 StatefulSet 扩容为原来的值

评论