如何使用Multi-AZ将Node Sequelize连接到Amazon RDS MySQL

ulydmbyx  于 9个月前  发布在  Node.js
关注(0)|答案(3)|浏览(126)

我使用的是Amazon RDS托管的MySQL,支持多AZ。只是找不到任何关于如何正确连接Sequelize到Amazon RDS的信息,以便Sequelize相应地处理故障转移等?
我只是使用以下配置,但不知道这是不够的或建议?

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

字符串
将Amazon RDS与Multi-AZ配合使用,我认为以下几点很重要:
1.尝试重新连接,如果连接丢失,直到它再次可用
1.不要缓存mysql服务器的ip地址太长(亚马逊建议少于1分钟)
亚马逊服务器没有写任何关于连接处理和池化的东西。

iih3973s

iih3973s1#

以下是我如何与我的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'
})

字符串

bttbmeg0

bttbmeg02#

前面的答案对我不起作用,经过一些研究,这个选项对象做到了:

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',
}

字符串
我在同一个默认VPC中运行一个RDS MySQL和一个EC2示例,当使用sequelize将来自该EC2的节点应用程序与RDS连接时,此选项对象有效。

8ljdwjyq

8ljdwjyq3#

ssl: 'Amazon RDS'不适合我。
经过一番挖掘,这个工作:

var options = {
  host: settings.database.host,
  port: settings.database.port,
  logging: console.log,
  dialect: 'mysql',
  "dialectOptions": {
        "ssl": {
            "ca": fs.readFileSync('./eu-central-1-bundle.pem')
        }
    }
}

字符串
其中eu-central-1-bundle.pem是连接到mysql rds DB所需的aws CA证书。

相关问题