简体   繁体   English

docker-compose将mysql转移到另一台主机

[英]docker-compose transfer mysql to another host

I'm using docker-compose to run MYSQL container and linking it to www-server 我正在使用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

When I'm running it on my own computer and want to tranfer it to the production. 当我在自己的计算机上运行它并希望将其传输到生产环境时。 I do this 我做这个

  1. Copy to volume etc/mysql directory to server 复制到etc / mysql目录到服务器
  2. then building this docker-compose build 然后构建这个docker-compose构建
  3. then starting docer-compose up -d 然后启动docer-compose up -d
  4. When trying to access data. 尝试访问数据时。 I get error "Base table or view not found: 1146 Table 'user-db.Packages' doesn't exist". 我收到错误消息“找不到基本表或视图:1146表'user-db.Packages'不存在”。 I founded out that the database structure is there, but cant accesses to data. 我发现数据库结构在那里,但是无法访问数据。

How I should move my mysql data to new environment? 我应该如何将mysql数据移至新环境?

Can you instead dump your MySQL DB from your computer and restore it to the other environment. 您是否可以从计算机中转储MySQL DB并将其还原到其他环境?

dump DB: 转储数据库:

docker exec -it lip-mysql mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

Restore DB: 还原数据库:

docker exec -it lip-mysql mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

Can you also pin the MySQL docker image in your docker-compose file to avoid not-intended MySQL engine updates. 您还可以将MySQL docker映像固定在docker-compose文件中,以避免意外的MySQL引擎更新。

Here's the solution what I used. 这是我使用的解决方案。

  • First transfer your mysql files to another volumes: - ./etc/mysql:/var/lib/mysql server 首先将您的mysql文件传输到另一个volumes: - ./etc/mysql:/var/lib/mysql mysql volumes: - ./etc/mysql:/var/lib/mysql服务器
  • Then create docker-compose.yml and import the volume like in posting. 然后创建docker-compose.yml并像在发布中一样导入卷。
  • Here comes the issue what I had. 这是我所遇到的问题。 VERSION NUMBERING MYSQL IMAGE. 版本号MYSQL图像。 Use same version numbering when starting mysql. 启动mysql时使用相同的版本编号。 If you are using latest-tag you should get the error message to use mysql_upgrade. 如果您使用的是最新标签,则应获得使用mysql_upgrade的错误消息。 Use it if you want to use latest image. 如果要使用最新图像,请使用它。

Here is the right docker-compose.yml to start: 这是开始的正确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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM