docker-compose将mysql传输到另一台主机

问题描述 投票:0回答:2

我正在使用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

当我在自己的计算机上运行它并希望将其转移到生产中时。我这样做

  1. 复制到卷etc / mysql目录到服务器
  2. 然后构建这个docker-compose构建
  3. 然后启动docker-compose up -d
  4. 尝试访问数据时。我收到错误“未找到基表或视图:1146表'user-db.Packages'不存在”。我发现数据库结构存在,但无法访问数据。

我应该如何将我的mysql数据移动到新环境?

mysql docker docker-compose
2个回答
1
投票

您可以转而从计算机中转储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引擎更新。


0
投票

这是我使用的解决方案。

  • 首先将您的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
© www.soinside.com 2019 - 2024. All rights reserved.