mysql - Kubernetes MySQL pod 不断崩溃并显示 Unable to lock ./ibdata1 错误:11
问题描述
我已经为 mysql pod 创建了新的 docker 镜像并添加了 kubernetes statefulset yaml。当我将 mysql pod 缩放到 1 时,它一直在崩溃并抛出消息
unable to lock ./ibdata1 error: 11
我在谷歌上搜索了很多关于这个错误的信息,但没有一个给出解决方案。感谢有人帮助我!
码头工人文件:
FROM mysql/mysql-server
CMD [ "--max_connections=10000" ]
并创建如下 MySQL YAML:
{
"kind": "StatefulSet",
"apiVersion": "apps/v1beta2",
"metadata": {
"name": "mysql-test",
"namespace": "test",
"selfLink": "/apis/apps/v1beta2/namespaces/test/statefulsets/mysql-test",
"uid": "e7768a0b-faf9-11e9-a989-d8c497367e2a",
"resourceVersion": "315823479",
"generation": 33,
"creationTimestamp": "2019-10-30T09:44:44Z",
"labels": {
"app": "mysql-test",
"release": "mysql-test"
}
},
"spec": {
"replicas": 1,
"selector": {
"matchLabels": {
"app": "mysql-test"
}
},
"template": {
"metadata": {
"creationTimestamp": null,
"labels": {
"app": "mysql-test"
}
},
"spec": {
"volumes": [
{
"name": "data",
"persistentVolumeClaim": {
"claimName": "mysqldata"
}
},
{
"name": "backup",
"persistentVolumeClaim": {
"claimName": "mysqlbackup"
}
}
],
"containers": [
{
"name": "latest",
"image": "<Enterprise repository>/careercompass/mysql:latest",
"ports": [
{
"name": "mysql",
"containerPort": 3306,
"protocol": "TCP"
}
],
"env": [
{
"name": "MYSQL_PASSWORD",
"valueFrom": {
"secretKeyRef": {
"name": "mysql",
"key": "mysql-password",
"optional": true
}
}
},
{
"name": "MYSQL_ROOT_PASSWORD",
"valueFrom": {
"secretKeyRef": {
"name": "mysql",
"key": "mysql-root-password",
"optional": true
}
}
},
{
"name": "MYSQL_USER",
"value": "mysql"
},
{
"name": "MYSQL_DATABASE"
}
],
"resources": {
"limits": {
"cpu": "10",
"memory": "10000Mi"
},
"requests": {
"cpu": "200m",
"memory": "3000Mi"
}
},
"volumeMounts": [
{
"name": "data",
"mountPath": "/var/lib/mysql"
},
{
"name": "backup",
"mountPath": "/var/lib/mysqlbackup"
}
],
"terminationMessagePath": "/var/lib/termination-log",
"terminationMessagePolicy": "File",
"imagePullPolicy": "IfNotPresent"
}
],
"restartPolicy": "Always",
"terminationGracePeriodSeconds": 30,
"dnsPolicy": "ClusterFirst",
"securityContext": {
"runAsUser": 999,
"fsGroup": 999
},
"schedulerName": "default-scheduler"
}
},
"serviceName": "",
"podManagementPolicy": "OrderedReady",
"updateStrategy": {
"type": "RollingUpdate",
"rollingUpdate": {
"partition": 0
}
},
"revisionHistoryLimit": 10
},
"status": {
"observedGeneration": 33,
"replicas": 1,
"currentReplicas": 1,
"updatedReplicas": 1,
"currentRevision": "mysql-test-68cb64885c",
"updateRevision": "mysql-test-68cb64885c",
"collisionCount": 0
}
}
解决方案
在日志中你会发现一些这样的:
[ERROR] Do you already have another mysqlId sever running on port: 3306?
让我们找出端口 3306 上已经运行的内容:
lsof -i:3306
然后使用杀死它(即进程号)kill -9 PROCESS
kill -9 13498
然后尝试再次重新启动 MySQL。
推荐阅读
- r - 如何在 R 中生成一个可显示的表,对不同列中字符串和数字之间的匹配进行计数/求和
- javascript - 我正在尝试记录作者姓名和 JSON 文件中的引用,但代码不起作用?
- java - 在基于节点的解释器中处理不同的数据类型
- c++ - 关闭和打开多个窗口 GLFW OpenGL C++
- kubernetes - 在 kubernetes 中创建 Pod 时,CPU 和内存的请求和限制的默认值是多少?
- r - 使用 ggplot + osmdata 绘制多边形的问题
- javascript - 创建javascript ICS以添加到ios上的日历
- ruby-on-rails - 如何在 FactoryGirl 工厂中定义/设置属性?
- typescript - TypeScript 如何使用 Partial 深度更新对象
- c# - 以gridview格式显示JSON C#