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 文档中所述:

Importing data from a MySQL or MariaDB DB to a MySQL or MariaDB DB instance

您还可以将现有 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 数据库

将Docker链接到本地​​MySQL数据库[重复]

怎么linux本地mysql放到docker中?

我无法使用 DataGrip 数据库客户端从本地主机连接到 docker 中的 mysql

无法从本地连接到 mysql docker

如何从 docker 容器中的 python 脚本连接到 localhost 上的 mysql 数据库