【问题标题】:How to move docker volume to disk location?如何将 docker 卷移动到磁盘位置?
【发布时间】:2021-02-07 15:28:36
【问题描述】:

我有一个MySQL docker image 在 Ubuntu VPS 上的 docker 容器中运行。我通过以下docker-composer.yml 文件使用docker-compose up -d 命令启动MySQL

version: "3"
services:

    mysql_server:
        image: mysql:8.0.21
        restart: always
        container_name: mysql_server
        environment:
            MYSQL_DATABASE: db_name
            MYSQL_USER: db_username
            MYSQL_PASSWORD: db_password
            MYSQL_ROOT_PASSWORD: root_password
        volumes:
            - mysql_server_data:/var/lib/mysql
            - /mysql/files/conf.d:/etc/mysql/conf.d

我遇到了一些性能问题,并希望执行以下操作以提高性能。

  1. 我希望将mysql_server_data 卷中的数据挂载到/mysql/data 而不会丢失任何数据,因为此实例在生产中运行。

  2. 我还想在/mysql/files 上挂载 MySQL 配置文件,以便更改实例配置以提高性能。

问题

如何将卷的数据位置从mysql_server_data 更改为/mysql/data

另外,如何将 MySQL 的配置文件挂载到 /mysql/files/conf.d 以允许我更新设置?

我尝试像这样挂载配置文件

        volumes:
            - /mysql/files/conf.d:/etc/mysql/conf.d

但这创建了一个目录/mysql/files/conf.d,没有配置文件。

【问题讨论】:

    标签: docker docker-compose docker-volume docker-container


    【解决方案1】:

    要移动数据: 使用 docker-compose down 关闭容器,然后在本地文件系统上,将数据从 mysql_server_data 复制到 /mysql/data。然后更改撰写文件以反映新位置。最后用 docker-compose up 重启容器。

    要挂载配置文件,根据 MySQL 的 docker hub 文档,如果 /my/custom/config-file.cnf 是您的自定义配置文件的路径和名称,则您的卷映射是:

    /my/custom:/etc/mysql/conf.d

    请注意,将卷映射到容器不会将容器中的数据带到本地,而是反过来。所以如果你想在容器中拥有文件,你必须先在本地创建它。

    【讨论】:

    • 我终于可以尝试这个了。我使用此命令cp -a /var/lib/docker/volumes/root_mysql_server_data/. ./mysql/volume 复制了数据。然后在docker-compose.yml文件中,我把- mysql_server_data:/var/lib/mysql改成了- /mysql/volume:/var/lib/mysql。然后我执行docker-compose down 然后docker-compose up -d.. 但这没有用。我从 MySQL --initializing specified but the data directory has files in it. Aborting. 收到以下错误,设计的数据目录 /var/lib/mysql/ 无法使用。您可以删除服务器添加到其中的所有文件。
    • 我刚刚用一个小型测试数据库进行了尝试,它对我来说效果很好。请记住,您应该先关闭映像以确保没有数据丢失。所以写下来-> 复制-> 写起来。请注意,它可能确实警告数据已经存在,这是预期的(数据毕竟已经存在),但至少对我来说这只是一个警告,数据库工作得很好..
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 2018-11-28
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多