docker - 如何将 mysql 数据从本地迁移到 ec2 实例
Posted
技术标签:
【中文标题】docker - 如何将 mysql 数据从本地迁移到 ec2 实例【英文标题】:docker - how to migrate mysql data from local to ec2 instance 【发布时间】:2021-07-02 20:34:12 【问题描述】:在本地环境中,我正在使用 docker-compose 文件创建多个容器,包括 mysql 容器。
mysql容器的数据存放在./db-data
.
数据库中有 4 个表,例如表 A、B、C、D。
在开发环境中,我创建了一个 ec2 实例并使用相同的 docker-compose 文件创建容器,而 mysql 数据库由 Aws RDS 管理。
我想将表A和B的所有数据从本地复制到开发环境,但不知道如何实现?
docker-compose.yml
version: '2.1'
services:
test-db:
image: mysql:5.7
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=true
- MYSQL_USER=admin
- MYSQL_PASSWORD=12345
- MYSQL_DATABASE=test
volumes:
- ./db-data:/var/lib/mysql
ports:
- 3306:3306
test-web:
environment:
- NODE_ENV=local
#- DEBUG=*
- PORT=3030
build: .
command: >
./wait-for-db-redis.sh test-db npm run dev
ports:
- "3030:3030"
depends_on:
- test-db
【问题讨论】:
【参考方案1】:如果您想将数据从实例上的 mysql 迁移到 RDS mysql,mysqldump
可能是最简单的选择,如 AWS 文档中所述:
您还可以将现有 MySQL 或 MariaDB 数据库中的数据导入 MySQL 或 MariaDB 数据库实例。为此,您可以使用 mysqldump 复制数据库并将其直接通过管道传输到 MySQL 或 MariaDB 数据库实例中。
如果基本mysqldump
不适合您,还可以考虑其他选项,具体取决于您的要求。例如migrating live database with minimal downtime,或使用Percona XtraBackup software
,如AWS docs 中所述,甚至AWS database migration service。
【讨论】:
【参考方案2】:除了 Marcin 的回答,如果您使用的是 MYSQLWorkbench,您还可以执行以下操作:
-
在要提取数据的表中运行
SELECT * FROM <Your table name>;
单击Result Grid
中的Export
按钮
在格式中选择SQL Insert statements
然后您可以获取 SQL 插入语句的列表。
【讨论】:
以上是关于docker - 如何将 mysql 数据从本地迁移到 ec2 实例的主要内容,如果未能解决你的问题,请参考以下文章
从 django app docker 连接到本地 mysql 数据库