我在Ubuntu VPS上的Docker容器中运行一个MySQL 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
我遇到了性能问题,想尝试以下措施来提高性能:
我希望将
mysql_server_data
卷中的数据挂载到/mysql/data
,而不会丢失任何数据,因为该实例正在生产环境中运行。我还希望将MySQL配置文件挂载到
/mysql/files
,以便我可以更改实例配置来增加性能。
问题
如何将卷的数据位置从 mysql_server_data
更改为 /mysql/data
?
此外,我如何将MySQL的配置文件挂载在 /mysql/files/conf.d
上以允许我更新设置?
我尝试像这样挂载配置文件:
volumes:
- /mysql/files/conf.d:/etc/mysql/conf.d
但这样会创建一个目录
/mysql/files/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/
是无法使用的。您可以删除服务器添加到其中的所有文件。 - Jay