我有一个MySQL docker image在Ubuntu VPS的docker容器中运行。我通过以下docker-compose up -d
文件使用docker-composer.yml
命令启动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
我遇到一些性能问题,并且想做以下事情来尝试改善性能。
我希望将mysql_server_data
卷中的数据挂载到/mysql/data
上,而不会丢失任何数据,因为此实例在生产中正在运行。
我还想在/mysql/files
上安装MySQL配置文件,以便更改实例配置以提高性能。
问题
如何将卷的数据位置从mysql_server_data
更改为/mysql/data
?
此外,如何在/mysql/files/conf.d
上安装MySQL的配置文件以允许我更新设置?
我试图像这样挂载配置文件
volumes:
- /mysql/files/conf.d:/etc/mysql/conf.d
但是这创建了一个目录/mysql/files/conf.d
,没有配置文件。
答案 0 :(得分:1)
要移动数据: 使用docker-compose关闭容器,然后在本地文件系统上,将数据从mysql_server_data复制到/ mysql / data。然后更改撰写文件以反映新位置。最后,使用docker-compose up重启容器。
要安装配置文件,请按照MySQL的docker hub文档,如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则您的卷映射为:
/my/custom:/etc/mysql/conf.d
请注意,将卷映射到容器不会将容器中的数据带到本地,而是将数据带到本地。因此,如果要将文件保存在容器中,则必须首先在本地创建文件。