简体   繁体   English

docker - 如何将 mysql 数据从本地迁移到 ec2 实例

[英]docker - how to migrate mysql data from local to ec2 instance

In local environment, I am using docker-compose file to create multiple containers, including mysql container.在本地环境中,我使用 docker-compose 文件创建多个容器,包括 mysql 容器。
The data of mysql container is stored in ./db-data . mysql 容器的数据存储在./db-data中。
There are 4 tables in the database, eg Table A,B,C,D.数据库中有4个表,例如表A,B,C,D。

In Development environment, I've created an ec2 instance and used same docker-compose file to create containers, while the mysql database is managed be Aws RDS.在开发环境中,我创建了一个 ec2 实例并使用相同的 docker-compose 文件创建容器,而 mysql 数据库由 Aws RDS 管理。

I want to copy all the data of Table A and B from local to development environment, but I wonder how can I achieve this?我想将表A和B的所有数据从本地复制到开发环境,但我想知道如何实现这一点?

docker-compose.yml 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

If you want to migrate your data from mysql on the instance to RDS mysql, probably mysqldump would be the easiest choice as explained in the AWS docs:如果要将数据从实例上的 mysql 迁移到 RDS mysql, mysqldump可能是最简单的选择,如 AWS 文档中所述:

You can also import data from an existing MySQL or MariaDB database to a MySQL or MariaDB DB instance.您还可以将现有 MySQL 或 MariaDB 数据库中的数据导入 MySQL 或 Z7F9733E208088B1CE6DF3D4BE17 DB 实例。 You do so by copying the database with mysqldump and piping it directly into the MySQL or MariaDB DB instance.为此,您可以使用mysqldump复制数据库并将其直接通过管道传输到 MySQL 或 MariaDB 数据库实例中。

There are other options to consider if basic mysqldump does not suit you, depending on your requirements.如果基本mysqldump不适合您,还可以考虑其他选项,具体取决于您的要求。 For example migrating live database with minimal downtime , or using Percona XtraBackup software as explained in AWS docs as well, or even AWS database migration service .例如以最少的停机时间迁移实时数据库,或者使用AWS 文档中解释的Percona XtraBackup software ,甚至AWS 数据库迁移服务

In addition to Marcin answer, if you are using MYSQLWorkbench you can do the following:除了 Marcin 的回答,如果您使用的是 MYSQLWorkbench,您还可以执行以下操作:

  1. Run SELECT * FROM <Your table name>;运行SELECT * FROM <Your table name>; in the table you want to extract the data在要提取数据的表中
  2. Click the Export button in Result Grid单击Result Grid中的Export按钮
  3. Choose SQL Insert statements in Format选择SQL Insert statements
  4. You can then get a list of SQL Insert statement.然后,您可以获得 SQL 插入语句的列表。 在此处输入图像描述

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

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