我正在使用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
当我在自己的计算机上运行它并希望将其转换为生产时。我这样做
- 复制到卷等/mysql 目录到服务器
- 然后构建这个 docker-compose 构建
- 然后启动 docer-compase up -d
- 尝试访问数据时。我收到错误"找不到基表或视图:1146 表'user-db。包'不存在"。我发现数据库结构在那里,但无法访问数据。
我应该如何将我的 mysql 数据移动到新环境?
您是否可以从计算机转储MySQL数据库并将其还原到其他环境。
转储数据库:
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]
您还可以将 MySQL docker 映像固定在 docker 撰写文件中,以避免意外的 MySQL 引擎更新。
这是我
使用的解决方案。
- 首先将您的 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