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

时间:2017-12-31 15:31:48

标签: mysql docker docker-compose

我使用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. 然后启动docer-compose up -d
  4. 尝试访问数据时。我收到错误"找不到基表或视图:1146表' user-db.Packages'不存在"。我发现数据库结构存在,但无法访问数据。
  5. 我应该如何将我的mysql数据移动到新环境?

2 个答案:

答案 0 :(得分: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引擎更新。

答案 1 :(得分:0)

这是我使用的解决方案。

  • 首先将您的mysql文件传输到另一台volumes: - ./etc/mysql:/var/lib/mysql服务器
  • 然后创建docker-compose.yml并像在发布中那样导入卷。
  • 这里是我所遇到的问题。版本号MYSQL图像。启动mysql时使用相同的版本编号。如果您使用的是最新标签,则应获得使用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