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

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

  1. 复制到卷etc / mysql目录到服务器
  2. 然后构建这个docker-compose构建
  3. 然后启动docker-compose up -d
  4. 尝试访问数据时。我收到错误“未找到基表或视图: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传输到另一台主机的主要内容,如果未能解决你的问题,请参考以下文章

将Mysql数据库转移到另一台计算机[关闭]

将数据库和表从一台服务器传输到另一台服务器

尝试通过多点连接将音频从麦克风流式传输到另一部手机

XMPPFramework - 如何将图像从一台设备传输到另一台设备?

如何将弹性数据从一台服务器传输到另一台服务器

如何使用dto和C#窗口形式将信息从一种形式传输到另一种形式?