docker-compose将mysql传输到另一台主机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose将mysql传输到另一台主机相关的知识,希望对你有一定的参考价值。
我正在使用docker-compose来运行mysql容器并将其链接到www-server
mysql:
image: mysql
container_name: lip-mysql
ports:
- "3030:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=user-db
- MYSQL_USER=user
- MYSQL_PASSWORD=user
volumes:
- ./etc/mysql:/var/lib/mysql
当我在自己的计算机上运行它并希望将其转移到生产中时。我这样做
- 复制到卷etc / mysql目录到服务器
- 然后构建这个docker-compose构建
- 然后启动docker-compose up -d
- 尝试访问数据时。我收到错误“未找到基表或视图:1146表'user-db.Packages'不存在”。我发现数据库结构存在,但无法访问数据。
我应该如何将我的mysql数据移动到新环境?
答案
您可以转而从计算机中转储MySQL数据库并将其还原到其他环境。
dump DB:
docker exec -it lip-mysql mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
恢复数据库:
docker exec -it lip-mysql mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
你还可以在你的docker-compose文件中固定MySQL docker镜像,以避免不期望的MySQL引擎更新。
另一答案
这是我使用的解决方案。
- 首先将您的mysql文件传输到另一个
volumes: - ./etc/mysql:/var/lib/mysql
服务器 - 然后创建docker-compose.yml并像发布一样导入卷。
- 这就是我所拥有的问题。版本号MYSQL图像。启动mysql时使用相同的版本编号。如果您使用的是latest-tag,则应该收到错误消息以使用mysql_upgrade。如果要使用最新图像,请使用它。
这是正确的docker-compose.yml开始:
mysql:
image: mysql:5.7
container_name: lip-mysql
ports:
- "3030:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=user-db
- MYSQL_USER=user
- MYSQL_PASSWORD=user
volumes:
- ./etc/mysql:/var/lib/mysql
以上是关于docker-compose将mysql传输到另一台主机的主要内容,如果未能解决你的问题,请参考以下文章