• 使用教程
  • kubsphere中mysql使用nfs的存储, 出现文件lock的解决方法

因为mysql的存储文件被锁,pod启动失败,增加sidecar用来访问mysql的文件,并释放文件锁。步骤如下:

  1. 增加mysql-sidecar
    kubectl -n kubesphere-system edit deployment mysql
    在spec.template.spec.containers下增加sidecar container
    - command:
    - sleep
    - "3600"
    image: busybox:1.28.4
    imagePullPolicy: IfNotPresent
    name: mysql-sidecar
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /var/lib/mysql
    name: db-persistent-storage

  2. 释放msyql文件锁
    kubectl -n kubesphere-system exec -it mysql-5ccd95f8c7-9p7vm -c mysql-sidecar sh
    注:mysql-5ccd95f8c7-9p7vm 为 mysql deployment创建的pod
    / # cd /var/lib/mysql/
    对被锁住并报错的文件执行以下操作来释放文件锁, 通常有 (ibdata1, ib_logfile0, ib_logfile1…).
    mv ibdata1 ibdata1.bak
    cp -a ibdata1.bak ibdata1

    执行完,退出sidecar,通过命令
    kubectl -n kubesphere-system logs mysql-5ccd95f8c7-9p7vm mysql 看到mysql的log不再报错,表明文件锁释放成功。
    2020-01-07T09:03:44.034509Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.11' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
    如果还有文件报错,再通过上述步骤,来释放报错文件的文件锁。

    1 年 后

    bmingithub 我也遇到这个问题了,感觉这样只是临时解决啊,有什么办法能从根本上解决问题么

      22 天 后

      Thingfxj 自建的nfs不太适合用来做mysql的后端存储,生产环境建议数据库使用其他更可靠的数据库存储

      1 个月 后

      bmingithub 请问能发一下你这个mysql yaml配置嘛?
      我按照你的配置加了sidecar container,不成功,提示报错

      商业产品与合作咨询