【问题标题】:Mysql k8s Pod with mount volume on AWS failing在 AWS 上挂载卷的 Mysql k8s Pod 失败
【发布时间】:2018-04-16 09:59:28
【问题描述】:

我尝试了 mysql 与 mount-volume 来获得跨 /var/lib/mysql 的持久性

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
 ---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: mysql
spec:
 selector:
   matchLabels:
     app: mysql
 strategy:
   type: Recreate
 template:
   metadata:
     labels:
       app: mysql
   spec:
    containers:
    - image: mysql:5.6
      name: mysql
      env:
      - name: MYSQL_ROOT_PASSWORD
        value: password
      ports:
      - containerPort: 3306
        name: mysql
      volumeMounts:
      - name: mysql-persistent-storage
        mountPath: /var/lib/mysql
     volumes:
     - name: mysql-persistent-storage
       persistentVolumeClaim:
         claimName: mysql-pv-claim

kubelogs 如下

sh-3.2# kubectl logs acds-catchup-db-6f7d4b6c5b-2jwds  
Initializing database
2018-04-16T09:23:18.020740Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-04-16T09:23:18.022014Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2018-04-16T09:23:18.022037Z 0 [ERROR] Aborting

在调查中,我发现在 MountVolume 中创建了一个名为 Lost+Found 的目录。

有谁能帮我解决这个问题

【问题讨论】:

    标签: mysql amazon-web-services kubernetes


    【解决方案1】:

    该目录始终存在于卷的根路径中,因此您不能只删除它。

    您有 2 个选项来解决它:

    1. 在 MySQL 配置中添加 --ignore-db-dir=lost+found 选项。我认为这是更好的方法。
    2. 将数据库目录设置为卷内的路径,而不是卷的根路径。您可以通过--datadir= 选项指定数据库目录。

    这里是args设置的例子:

    spec:
      containers:
      - name: mysql
        image: mysql:5.6
        args: ["--ignore-db-dir=lost+found"]
    

    【讨论】:

      猜你喜欢
      • 2018-06-10
      • 2021-01-28
      • 2021-12-05
      • 2021-08-23
      • 2017-05-18
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 2021-01-22
      相关资源
      最近更新 更多