我正在使用具有多可用区支持的 Amazon RDS 托管 MySQL。只是找不到任何有关如何正确将 Sequelize 连接到 Amazon RDS 以便 Sequelize 相应地处理故障转移等的信息?
我只是使用以下配置,但不知道这是否足够或推荐?
sequelizeConfig = {
logging: false,
pool: { maxConnections: 5, maxIdleTime: 30},
sequelizeConfig[dialectOptions] = {
ssl: 'Amazon RDS'
}
}
将 Amazon RDS 与多可用区结合使用我认为以下几点很重要:
Amazon Docs 没有编写任何有关连接处理和池的内容。
以下是我与 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'
})
之前的答案对我不起作用,经过一番研究,这个选项对象做到了:
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 连接时,此选项对象起作用。
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 数据库所需的 aws CA 证书。