Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect Node Sequelize to Amazon RDS MySQL with Multi-AZ probably

I'm using an Amazon RDS hosted MySQL with Multi-AZ Support. Just could not find any information on how to connect Sequelize to Amazon RDS properly so that Sequelize is handling fail-overs etc. accordingly?

I'm just using the following config, but do not know if this is enough or recommended?

sequelizeConfig = {
  logging: false,
  pool: { maxConnections: 5, maxIdleTime: 30},
  sequelizeConfig[dialectOptions] = {
    ssl: 'Amazon RDS'
  }
}

Using Amazon RDS with Multi-AZ I consider the following is important:

  1. Try reconnecting if connection got lost, until it is available again
  2. Don't cache mysql server ip address too long (Amazon suggests less than 1 min)

Amazon Docs are not writing anything about connection handling and pooling.

like image 213
Manuel Avatar asked Nov 30 '16 10:11

Manuel


2 Answers

The previous answer didn't work for me, after some research, this options object did:

var options = {
  host: settings.database.host,
  port: settings.database.port,
  logging: console.log,
  maxConcurrentQueries: 100,
  dialect: 'mysql',
  ssl: 'Amazon RDS',
  pool: { maxConnections: 5, maxIdleTime: 30 },
  language: 'en',
}

I'm running a RDS MySQL and a EC2 instance in the same default VPC, this options object worked when connecting a node app from that EC2 with the RDS using sequelize.

like image 174
Jmorazano Avatar answered Oct 17 '22 04:10

Jmorazano


Here is how i got connected with my RDS:

 var config = require(__dirname + '/../config/config.json')[env];
 // your config file will be in your directory
 var sequelize = new Sequelize(config.database, config.username, config.password, {
    host: '****.****.us-west-1.rds.amazonaws.com',
    port: 5432,
    logging: console.log,
    maxConcurrentQueries: 100,
    dialect: 'postgres',
    dialectOptions: {
        ssl:'Amazon RDS'
    },
    pool: { maxConnections: 5, maxIdleTime: 30},
    language: 'en'
})
like image 43
Omar Faroque Anik Avatar answered Oct 17 '22 06:10

Omar Faroque Anik