Amazon Aurora 被称为“为云构建的兼容 MySQL 和 PostgreSQL 的关系数据库”。
AWS Aurora 是否包含对MySQL 插件 API的支持?
Amazon Aurora 被称为“为云构建的兼容 MySQL 和 PostgreSQL 的关系数据库”。
AWS Aurora 是否包含对MySQL 插件 API的支持?
我有下表:
CREATE TABLE `tokens` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`s_id` int(10) unsigned NOT NULL,
`a_token` char(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`a_token_exp` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `u_a_token` (`a_token`) USING HASH,
KEY `f_seid` (`s_id`),
CONSTRAINT `f_seid` FOREIGN KEY (`s_id`) REFERENCES `sessions` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1
我想更改字符集,a_token
因为我们使用此命令仅使用 ascii 字符:
ALTER TABLE tokens MODIFY a_token CHAR(40) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL;
和新SHOW CREATE TABLE
节目:
CREATE TABLE `tokens` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`id` int(10) unsigned NOT NULL,
`a_token` char(40) CHARACTER SET ascii NOT NULL,
`a_token_exp` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `u_a_token` (`a_token`) USING HASH,
KEY `f_seid` (`s_id`),
CONSTRAINT `f_seid` FOREIGN KEY (`s_id`) REFERENCES `sessions` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=latin1
然后我跑OPTIMIZE TABLE oauth_session_access_tokens
。
此查询应该(我不确定)我的架构的表大小:
SELECT table_name AS "Table",
((data_length + index_length)) AS "Size"
FROM information_schema.TABLES
WHERE table_schema = "test"
ORDER BY (data_length + index_length) DESC;
但特定表在.之前和之后tokens
总是返回49152ALTER TABLE
我可以假设即使使用 CHAR 和 utf8,如果只有 ASCII 字符,那么该字段不会为 utf8 预先分配空间?
在编写一些代码来管理我们的手动快照时,我注意到许多最近的 AWS PostgreSQL-on-Aurora 快照显示存储大小为 0 GB(旧的为 1 GB)。我认为它可能在错误的方向上四舍五入(到目前为止数据库是 ~800 meg),但我不确定这是否是 0 大小的原因。
我恢复了其中一张快照,目的是确认其中有可用数据。尽管使用与生产集群相同的传入 IP 和安全组,但我无法连接到从这些快照之一恢复的集群。事实上,即使在显式添加包含我的 IP 的 SG 之后,我也无法连接到它。多年来,我一直在使用 RDS(在“常规”postgres 和 MSSQL 上),所以我怀疑这里是否存在“noob RDS”问题——但我不会忽视 noob Aurora 问题。显然我遗漏了 Aurora(如 PostgreSQL)和这些其他数据库之间的一些区别——或者存在一个尚未暴露出来的集群/实例/数据库问题。
我错过了什么?
使用Amazon Aurora Postgres 2.0 版,它基本上是 PostgreSQL 10.4,带有修改的存储层。
尝试恢复包含多行的转储,例如:
ALTER FUNCTION myschema.f_myfunc(anyarray, anyelement) OWNER TO myrole;
ALTER FUNCTION
对于每一个这样的情况,我都会收到一条错误消息:
ERROR: improper qualified name (too many dotted names)
在 psql 中尝试相同的操作会产生相同的错误。即使是最简单的形式:
ALTER FUNCTION foo() OWNER TO myrole;
没有虚线名称。我在这里发现了类似的投诉: https ://forums.aws.amazon.com/thread.jspa?messageID=872096&tstart=0
一定是 Aurora 中的错误 - 还是我错过了什么?