我能够连接普通的AWS RDS MySQL实例(5.7.16)。但是,由于我必须使用MySQL作为文档存储,我通过安装mysqlx插件来配置MySQL实例,这是文档存储所必需的。
在此之后,我试图在同一个实例上的端口33060上连接MySQL文档存储但无法连接。我使用lambda进行连接,导入xdevapi(@ mysql / xdevapi)包并尝试在端口33060上连接MySQL RDS实例。
但是,我没有看到任何错误,因此我只是想知道AWS RDS是否支持MySQL文档存储。
代码:
xdevapi.getSession({
host: process.env.HOSTNAME,
port: process.env.PORT,
dbUser: process.env.DB_USER,
dbPassword: process.env.DB_PASSWORD
}).then(function (session) {
console.log("Connected");
session.close();
return callback(null, {'responsne':'connected', statusCode: 200});
}).catch(function (err) {
console.log(err.stack);
return callback(null, {'responsne':err.stack, statusCode: 400});
});
请帮助我找到这个。
答案 0 :(得分:0)
很晚才回答,但希望将来可能有助于澄清类似的问题。由于显然RDS运行MySQL 5.7.16,因此默认情况下不应加载X插件(它启用文档存储)。
除非您能够提供mysqld
启动选项(在本例中为--plugin-load=mysqlx=mysql.so
)或具有客户端访问权限,否则您可以按照here所述的步骤启用该插件,你运气不好。
还有可能RDS正在运行某种fork,它甚至不捆绑X插件。
此外,Node.js的X DevAPI连接器仅保证对MySQL 8.0的支持,因此,虽然您应该能够在以后的MySQL 5.7版本中使用它,但是存在一些限制。
答案 1 :(得分:0)
由于MySQL 8.0.11现在可以在AWS上普遍使用,因此我们一直在通过x-plugin查看文档存储功能。
在示例数据库(https://dev.mysql.com/doc/refman/8.0/en/mysql-shell-tutorial-javascript-download.html)中,它创建了架构并将其导入为OK,但似乎并未将db对象公开给mysqlsh。
例如,当我运行
\use world_x
连接到它输出的本地主机实例
Default schema set to `world_x`.
Fetching table and column names from `world_x` for auto-completion... Press ^C to stop.
当连接到RDS实例时,我只会得到
Default schema set to `world_x`.
此外,根据https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt,不支持X插件,据我了解,这意味着不支持文档存储功能。