MySQL 故障记录

148次阅读
没有评论

开始的现象是 MySQL 服务重启失败

MySQL 故障记录

深入排查错误日志,发现之前出现过磁盘空间不足的日志记录

MySQL 故障记录
[ERROR] [MY-000035] [Server] Disk is full writing './binlog.056637' (OS errno 28 - No space left on device). Waiting for someone to free space... Retry in 60 secs. Message reprinted in 600 secs.

因为我是采用 Helm 在 AKS 内部署的 MySQL 服务,并且挂载的磁盘是 Azure 内置存储类动态创建 Azure 磁盘 PV (支持实施动态扩容)

于是,只需手动将挂载到mysql pod 的 pvc 的 resources.request.storage 属性值调大,再重启 mysql pod 就完成了本次故障修复

MySQL 故障记录

下面简短的帮大家科普下azure disk 如何支持 kubernetes storage class 动态创建持久化卷(persistent volume)

存储类(storage class)用于定义使用持久性卷(persistent volume)动态创建存储单位的方式。

在 AKS 上使用 Azure 磁盘 CSI 驱动程序时,还有两个使用 Azure 磁盘 CSI 存储驱动程序的内置 StorageClasses。 其他这些 CSI 存储类是使用群集连同树中默认的存储类一起创建的。

  • managed-csi:使用 Azure Standard SSD 本地冗余存储 (LRS) 创建托管磁盘。 从 Kubernetes 版本 1.29 开始,在跨多个可用性区域部署的 Azure Kubernetes 服务 (AKS) 群集中,此存储类利用 Azure 标准 SSD 区域冗余存储 (ZRS) 来创建托管磁盘。
  • managed-csi-premium:使用 Azure 高级 LRS 创建托管磁盘。 从 Kubernetes 版本 1.29 开始,在跨多个可用性区域部署的 Azure Kubernetes 服务 (AKS) 群集中,此存储类利用 Azure 高级区域冗余存储 (ZRS) 来创建托管磁盘。

这两个存储类中的回收策略可确保在删除相应 PV 时删除基础 Azure 磁盘。 存储类还会将 PV 配置为可扩展。 只需使用新大小编辑永久性卷声明 (PVC) 即可。

如需了解当前pod挂载的pvc是否支持动态扩容,只需向上查看这个 pvc 的 yaml 文件中引用的 storage class 是否具备 allowVolumeExpansion: true 这个属性

example-sc.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: azuredisk-csi-waitforfirstconsumer
provisioner: disk.csi.azure.com
parameters:
  skuname: StandardSSD_LRS
allowVolumeExpansion: true
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

example-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: custom-azure-disk
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: azuredisk-csi-waitforfirstconsumer
  resources:
    requests:
      storage: 5Gi

这样挂载了 custom-azure-disk pvc 的pod如果想扩容磁盘时,只需手动修改 example-pvc.yaml 文件中的 resources.request.storage 属性的值即可(例如讲 5Gi 改成 10 Gi)

正文完
 0
weldonwang
版权声明:本站原创文章,由 weldonwang 于2024-09-14发表,共计1570字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)