簡體   English   中英

帶有掛載卷的MySQL k8s Pod在AWS上失敗

[英]Mysql k8s Pod with mount volume on AWS failing

我嘗試用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的目錄。

任何可以幫助我解決這個問題

該目錄始終存在於卷的根路徑中,因此您不能僅將其刪除。

您有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"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM