AWS RDS 是不是支持 MySQL 作为文档存储
Posted
技术标签:
【中文标题】AWS RDS 是不是支持 MySQL 作为文档存储【英文标题】:Does AWS RDS supports MySQL as document storeAWS RDS 是否支持 MySQL 作为文档存储 【发布时间】:2017-06-06 23:43:02 【问题描述】:我能够连接正常的 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);
);
请帮我找到这个。
【问题讨论】:
如果您看不到错误,则意味着您必须打开错误报告。 我正在使用 .catch() 来捕获任何错误。我试图给一些不可用的端口然后我得到错误。但是,这个 33060 端口我什么都看不到,如果没有问题,它就不会进入。我会用我的代码更新问题。 你为什么使用端口 33060 而不是端口 3306?另外,该端口(3306 或 33060)是否在 RDS 安全组中打开? 【参考方案1】:由于 MySQL 8.0.11 现在在 AWS 上普遍可用,我们一直在通过 x-plugin 研究文档存储功能。
在示例 DB (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 插件,据我了解,这意味着不支持文档存储功能。
【讨论】:
【参考方案2】:相当晚的答案,但希望它可能有助于在未来澄清类似的问题。由于显然 RDS 运行的是 MySQL 5.7.16,因此默认情况下它不应加载 X 插件(启用文档存储)。
除非您能够提供mysqld
启动选项(在本例中为--plugin-load=mysqlx=mysql.so
)或具有客户端访问权限,在这种情况下,您可以按照here 中描述的步骤启用插件,否则您将不走运。
还有可能 RDS 正在运行某种分叉,甚至没有捆绑 X 插件。
此外,Node.js 的 X DevAPI 连接器仅保证支持 MySQL 8.0,因此,尽管您应该能够在更高版本的 MySQL 5.7 中使用它,但存在一些限制。
【讨论】:
以上是关于AWS RDS 是不是支持 MySQL 作为文档存储的主要内容,如果未能解决你的问题,请参考以下文章
创建新的 AWS RDS 实例并导入数据,而不是将 MySQL 版本从 5.6 更新到 5.7