How do I import a local MySQL db to RDS db instance?

Using work bench :

  1. setup connection

  2. go to management tab and click on data import/restore

  3. click on import from self contained file .

  4. choose your mysqlbackup.sql file.

  5. select default database.

  6. click on start import button.

Using command line (On Windows ) :

mysqldump -u <localuser>

--databases world 
--single-transaction 
--compress 
--order-by-primary  
-p<localpassword> | mysql -u <rds-user-name>
    --port=3306 
    --host=ednpoint 
    -p<rds-password>

For more detail please refer : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.SmallExisting.html or https://docs.bitnami.com/aws/how-to/migrate-database-rds/#using-phpmyadmin-110

Hope it helps.


If you have a backup.sql in your PC, No need to transfer to EC2. Just give below line on your terminal in your PC.

$ mysql -h rdsinstance-hostaddress-ending.rds.amazonaws.com -u rds_username -p  rds_database < /path/to/your/backup.sql

Enter password: paswd_mysql_user

That's all.

Import backup directly from existing remote server

SSH connect to your remote server

Get the remote server mysql backup (backup/path/backupfile.sql)

Import backup file to RDS mysql while you in remote server shell

mysql -h your-mysql-instance.region.rds.amazonaws.com -u db_username -p db_name < backup/path/backupfile.sql

Note:

I have tried all the above criteria to import my existing backup to new RDS database, including through EC2 as in AWS documentation. It was a 10GB backup. So I have tried tables by tables as well. It shows process completed but some data were missing for large tables. So I had to write a DB to DB data migration script.


This is how I did it for a couple instances that had data in the MySQl tables.

The steps to creating an RDS database instance: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html

Note: Make sure the RDS instance has a security group configured that relates to the EC2 security group. http://docs.amazonwebservices.com/AmazonRDS/latest/UserGuide/USER_Workin...

Before we go forward, let me provide a list of what some of the following placeholders are:

  • host.address.for.rds.server = this will be what is referred to as the "end point" in your RDS description/settings page.
  • rdsusername = the master user account which you created during RDS setup.
  • rdsdatabase = a blank database which you created inside the server on your RDS instance.
  • backupfile.sql = the sql dump file your made of your pre-existing installation's database.

Once you've created a fresh RDS database instance, and have configured its security settings, log into this server (from within an ssh session to your EC2 server) and then create an empty database inside the instance using basic SQL commands.

mysql -h host.address.for.rds.server -P 3306 -u rdsusername -p
(enter your password)
create database rdsdatabase;

Then quit out of the MySQL environment inside your RDS server.

\q

This tutorial assumes you already have a backup from your old database. If you don't, go create one now. After that, you’re ready to import that sql dump file into the empty database waiting on your RDS server.

mysql -h host.address.for.rds.server -u rdsusername -p  rdsdatabase < backupfile.sql

It might take a few seconds to complete, depending on the size of the sql dump file. Your indication that it is finished is that the bash command prompt reappears.

Note: the command “mysqlimport” is used when imported data directly into an existing table inside a database. It might seem like we’re “importing” data, but this is not what we’re actually doing in this situation. The database we are migrating to has no tables yet, and the sql dump file we’re using contains the sql commands to generate the tables it needs.

Confirm the Transfer

Now, if you didn't get any error messages, then your sql transfer probably worked. If you want, you can double check to see if it did by connecting to your RDS database server, looking up the database you created, and check to see if the tables are now present.

mysql -h host.address.for.rds.server -P 3306 -u rdsusername -p
(enter your password)
use rdsdatabase;
show tables;

I prefer using MySQL workbench. It's much more easier & user friendly than the command line way.

It provides a simple GUI.

MySQL workbench or SQL Yog.

These are the steps that I did.

1) Install MySQL Workbench.

2) In AWS console, there must be a security group for your RDS instance. Add an inbound rule to that group for allowing connections from your machine. It's simple. Add your IP-address.

3) Open MySQL workbench, Add a new connection.

4) Give the connection a name you prefer.

5) Choose connection method- Standard TCP/IP

6) Enter your RDS endpoint in the field of Hostname.

7) Port:3306

8) Username: master username (the one which which you created during the creation of your RDS instance)

9)Password: master password

10) Click Test Connection to check your connection.

11) If connection is successful, click OK.

12) Open the connection.

13) you will see your database 'realcardiodb' there.

14) Now you can export your mysqldump file to this database. Go to-> Server. Click Data Import.

15) You can check whether the data has been migrated by simply opening a blank SQL file & typing in basic SQL commands like use database, select * from table;

That's it. Viola.