bmingithubK零S
- 已编辑
因为mysql的存储文件被锁,pod启动失败,增加sidecar用来访问mysql的文件,并释放文件锁。步骤如下:
增加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释放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.
如果还有文件报错,再通过上述步骤,来释放报错文件的文件锁。