簡體   English   中英

Mysql無法寫入minikube創建的持久卷

[英]Mysql cannot write to a persistent volume that minikube creates

我正在嘗試使用hostPath將具有持久卷的minikube mysql pod部署到Mac主機上的/ data或/ Users目錄。 但是,創建的目錄始終具有錯誤的權限,並且mysql無法訪問或寫入該目錄。 如果我運行minikube ssh並運行chmod -R 777 /data/db/則mysql運行良好。 有什么方法可以讓minikube設置正確的權限?

我得到的錯誤是

2017-05-08 23:22:45 23 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-05-08 23:22:45 23 [Note] InnoDB: The InnoDB memory heap is disabled
2017-05-08 23:22:45 23 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-05-08 23:22:45 23 [Note] InnoDB: Memory barrier is not used
2017-05-08 23:22:45 23 [Note] InnoDB: Compressed tables use zlib 1.2.8
2017-05-08 23:22:45 23 [Note] InnoDB: Using Linux native AIO
2017-05-08 23:22:45 23 [Note] InnoDB: Using CPU crc32 instructions
2017-05-08 23:22:45 23 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2017-05-08 23:22:45 23 [Note] InnoDB: Completed initialization of buffer pool
2017-05-08 23:22:45 7fb9598ee740  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
2017-05-08 23:22:45 7fb9598ee740  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
2017-05-08 23:22:45 23 [ERROR] InnoDB: Creating or opening ./ibdata1 failed!
2017-05-08 23:22:45 23 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
2017-05-08 23:22:45 23 [ERROR] Plugin 'InnoDB' init function returned error.
2017-05-08 23:22:45 23 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-05-08 23:22:45 23 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-05-08 23:22:45 23 [ERROR] Aborting

我的容器定義是

spec: {
      containers: [
        {
          name: 'percona',
          image: 'percona:5.6',
          env: [
            {
              name: 'MYSQL_ROOT_PASSWORD',
              value: secrets['system-mysql-root-password'],
            },
            {
              name: 'MYSQL_OPS_USER',
              value: variables['system-mysql-ops-user'],
            },
            {
              name: 'MYSQL_OPS_PASSWORD',
              value: secrets['system-mysql-ops-password'],
            },
            {
              name: 'MYSQL_APP_USER',
              value: variables['system-mysql-app-user'],
            },
            {
              name: 'MYSQL_APP_PASSWORD',
              value: secrets['system-mysql-app-password'],
            },
          ],
          ports: [
            {
              containerPort: 3306,
              protocol: 'TCP',
            },
          ],
          volumeMounts: [
            { name: 'data', mountPath: '/var/lib/mysql' },
            { name: 'conf', mountPath: '/etc/mysql/conf.d' },
          ],
        },
      ],
      volumes: [
        { name: 'data', hostPath: { path: '/data/db/database' } },
        { name: 'conf', hostPath: { path: '/data/db/database-conf' } },
      ],
    },

以及minikube創建的目錄的默認權限

drwxr-xr-x 2 root root 4096 May  8 23:22 database
drwxr-xr-x 2 root root 4096 May  8 23:22 database-conf

解決方案1.將主機上的權限更改為例如777。

解決方案2。(更好)通過容器啟動將卷所有者更改為mysql用戶。 對於Docker(Dockerfile):

...
CMD chown mysql:mysql -R /data/db/

解決方案3.以root用戶啟動mysql;)

暫無
暫無

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

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