How to Connect to AWS RDS (MySQL) Instance from My Laptop?
Amazon RDS Aurora vs RDS MySQL vs MySQL on EC2? - Stack Overflow
Help choosing a MySQL RDS size for huge traffic spike next week
Slow queries to AWS RDS MySQL Database
You might want to try something like django-query-inspect (https://github.com/dobarkod/django-queryinspect). Django rest framework will make a lot of additional calls if you have nested serializers, etc, that aren't always obvious. If you find that this is the case, prefetch_related and select_related will really help get your query count down.
More on reddit.comVideos
You should benchmark Aurora carefully before you consider it. Launch an instance and set up a test instance of your application and your database. Generate as high of load as you can. I did at my last company, and I found that despite Amazon's claims of high performance, Aurora failed spectacularly. Two orders of magnitude slower than RDS. Our app had a high rate of write traffic.
Our conclusion: if you have secondary indexes and have high write traffic, Aurora is not suitable. I bet it's good for read-only traffic though.
(Edit: the testing I'm describing was done in Q1 of 2017. As with most AWS services, I expect Aurora to improve over time. Amazon has an explicit strategy of "Release ideas at 70% and then iterate." From this, we should conclude that a new product from AWS is worth testing, but probably not production-ready for at least a few years after it's introduced).
At that company, I recommended RDS. They had no dedicated DBA staff, and the automation that RDS gives you for DB operations like upgrades and backups was very helpful. You sacrifice a little bit of flexibility on tuning options, but that shouldn't be a problem.
The worst inconvenience of RDS is that you can't have a MySQL user with SUPER privilege, but RDS provides stored procs for most common tasks you would need SUPER privilege for.
I compared a multi-AZ RDS instance versus a replica set of EC2 instances, managed by Orchestrator. Because Orchestrator requires three nodes so you can have quorum, RDS was the clear winner on cost here, as well as ease of setup and operations.
I don't use Aurora personally, but I can HIGHLY recommend RDS over running your own on EC2. Having the failover happen automatically and also the backups is just worth every penny. Especially since RDS isn't that much more expensive.
Aurora looks really good on paper, but the more flexible choice of instances has kept me at PostGreSQL until now. We're looking at migrating to Aurora though, mainly because of the autoscaling storage provisioning and the higher performance.
When you create you create your RDS instance, there is an “Additional configuration” section, in which you can specify the database name, and it warns you that if no name is provided, no database will be created by default.
But as others have pointed out, you can connect with your tool of choice without a database name, perform a CREATE DATABASE xxx; where xxx is the name of the database, and then use can use that database going forward.
The name that you circled in the second screenshot is not a mysql database name, it's merely an identifier how your database instance is known as in AWS, i.e. endpoint name. These may be different!
Since logging in without specifying the MySQL database name works it means your connectivity and credentials are correct. You can't create tables because you didn't select a database where to create these tables.
So why can't you connect with a database name specified?
I suspect your default database name that was created by AWS when setting up the RDS instance isn't prueba but something else. You should be able to figure that you in the RDS Details tab:
Note that my Endpoint Name is prueba but the MySQL Database Name is something.
I can login to the RDS and list the databases:
~ $ mysql -h prueba.xxxxxxxxxx.ap-southeast-2.rds.amazonaws.com -uroot -p
Enter password:
Server version: 5.6.40 Source distribution
MySQL [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| innodb |
| mysql |
| performance_schema |
| something | <<<< Here is my "default" database
| sys |
+--------------------+
6 rows in set (0.04 sec)
So to wrap it up - you'll have to figure out your actual mysql database name:
- find out what was the default database name that you specified when creating the instance from the RDS Details screen, or
- find out the database name by logging in without a db name specified and then run
SHOW DATABASES;, or - create a new one using
CREATE DATABASE whatever;or using some dialog in your DB tool.
Once you've got the database name you can then connect to it in your connect dialog or with USE whatever; and then you can finally create your tables.
Hope that helps :)