有没有办法修复已停止与主数据库同步的只读副本?我已经在删除它并创建一个新的过程中,因为我找不到这个答案,但很高兴知道它是否再次发生。
数据库是带有 Innodb 表的 MySQL 数据库。
我有一个 AWS Lambda 函数 (Python3.8),在其中尝试使用 SQLAlchemy 连接到 RDS 代理。我已经确认函数配置将允许使用 PyMySQL 直接连接到代理。当我运行该函数时,我收到一条错误消息“(pymysql.err.InternalError) (3159, '此 RDS 代理需要 TLS 连接')\n(此错误的背景位于:http://sqlalche.me/e /2j85 )”。该错误的“背景”没有提及 TLS。我明白我需要做什么(告诉 SQLAlchemy 使用 SSL/TLS 连接),但我无法弄清楚这样做的语法。下面是我当前的代码。
import pymysql
import sqlalchemy
from database_info import make_connection_str
print('connecting to database')
CONN_STR = make_connection_str()
ENGINE = sqlalchemy.create_engine(CONN_STR)
METADATA = sqlalchemy.MetaData(ENGINE)
TABLE = sqlalchemy.Table('active_prospect', METADATA, autoload=True) #error comes with this line
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情与以下内容有关
ssl-mode=REQUIRED是需要的。pymysql.connect(... ssl={"true": True})作品。基于这两件事,我以两种不同的方式尝试了 (ssl-mode, ssl) = ('true', 'required') 的每种组合。
CONN_STR += '?ssl-mode=REQUIRED'create_engine(CONN_STR, connect_args={'ssl': 'True'})结果各不相同。在某些情况下,上面的错误已被替换AttributeError: 'str' …
我有运行 AWS ECS Fargate 的基于 Java 的容器。现在我们通过用户名-密码组合访问AWS RDS Postgres数据库,但我想知道如何使这个过程更安全。
但我有一个担忧:如何避免在.psql脚本(CREATE USER username WITH PASSWORD 'xxx')中存储用户密码?我认为更好的选择是完全避免使用密码,但我不知道该怎么做......
将密码加载到 Fargate 容器来自 AWS Secrets Manager - 这是可以的。
请问您有什么建议吗?
编辑:我将在这里分享我的进展,以便任何人都可以重现
文档:https://docs.aws.amazon.com/.../.../.../UsingWithRDS.IAMDBAuth.html
- 第一阶段 -
目标:IAM Auth 的 PoC(使用 IAM 用户)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "rds-db:*",
"Resource": "arn:aws:rds-db:eu-central-1:666:dbuser:db-YFVS/iam_user"
}
]
}
Run Code Online (Sandbox Code Playgroud)
注意:在资源中使用的是resourceId,而不是arn!(这可以在 rds 实例的“配置”选项卡中找到)
CREATE USER iam_user;
GRANT rds_iam …Run Code Online (Sandbox Code Playgroud) 我正在使用 cloudformation 在 AWS 上配置 lambda 和 RDS。但我不知道如何在 lambda 上添加数据库代理。下面的截图来自 lambda 控制台:
云信息支持添加这个吗?我在 lambda 和 db 代理模板中看不到它。
我在 AWS 中为 postgresql 11 部署了 RDS Aurora 集群。我的 lambda 正在通过 IAM 身份验证与该集群进行通信。由于 lambda 是无服务器的,因此每次触发 lambda 时我都必须创建与数据库的连接,并在完成时关闭连接。这不是很好,因为创建数据库连接很繁重并且需要时间。我使用 xray 来观察连接性能,创建新连接需要 150 毫秒。它还会给数据库集群带来很大的负载,因为数据库上会有许多短暂的连接。
经过一番搜索,我发现 RDS proxy 就是为了解决这个问题而设计的。因此,我部署了 RDS 代理来使用用户名/密码连接到我的 Aurora 集群。我的 lambda 通过 IAM 身份验证连接到 RDS 代理。
当我观察创建连接性能时,情况变得更糟。创建连接需要500ms以上,有时甚至需要1秒以上。
为什么使用RDS代理时情况更糟?代理中有什么我没有配置的吗?
postgresql amazon-web-services amazon-rds amazon-aurora amazon-rds-proxy
您好,我想将数据从一个 Postgres RDS 实例迁移到另一个实例。但是我的数据库包含具有外键约束的表。根据提供的官方迁移文档,AWS DMS 仅迁移所需的架构,不会迁移外键和其他二级索引。因此,我现在采用的方法是,首先手动迁移架构,然后在目标模式设置为不执行任何操作的情况下运行 DMS 作业。但是,我的加载因外键约束冲突错误而失败,因为 DMS 尝试并行迁移表,并且可能并行选择父子表进行加载。我尝试按照官方文档中的建议设置 session_replication_role=replica 以在会话级别暂时禁用约束,但这似乎也没有得到应用(注意:AWS DMS 文档中说该属性仅适用于 CDC 模式,因此尝试了也一样,但似乎没有得到应用,我面临着同样的外键约束违规问题)。谁能帮助如何实现这一目标?
postgresql data-migration amazon-web-services amazon-rds aws-dms
我正在尝试在 RDS postgres (13) 实例上设置pg_trgm.word_similarity_threshold GUC 参数。
我尝试使用部署后 SQL 脚本设置它:
SET pg_trgm.word_similarity_threshold = 0.5;
SELECT pg_reload_conf();
Run Code Online (Sandbox Code Playgroud)
但这会导致错误:Npgsql.PostgresException (0x80004005): 42501: permission denied for function pg_reload_conf
我还尝试通过 terraform 将其传递到参数列表中来设置它:
SET pg_trgm.word_similarity_threshold = 0.5;
SELECT pg_reload_conf();
Run Code Online (Sandbox Code Playgroud)
这会导致错误:Error modifying DB Parameter Group: InvalidParameterValue: Could not find parameter with name: pg_trgm.word_similarity_threshold
尽管 pg_trgm 是受支持的扩展,但该参数在 postgres 参数组中似乎不可用。有什么方法可以在我的 AWS Postgres RDS 中设置此参数吗?
当我浏览文档时,使用会话管理器我们可以连接私有子网中的实例,而无需堡垒主机本身[从本地到私有 ec2 的直接端口转发]。
但在 RDS 情况下,即使我们使用会话管理器建立连接,我们也需要在本地和私有 RDS 之间有一个 EC2 实例。
你能解释一下为什么会这样吗?请分享一些解释这一点的文件。
amazon-web-services amazon-rds aws-session-manager bastion-host
我已使用建议的默认值配置了 RDS,并且没有公共访问权限。
然后,我通过创建 VPC 连接器将 AppRunner 实例放入与 RDS 相同的安全组中。我可以看到两侧列出了相同的 VPC 和子网,但不知为何我仍然无法连接到 RDS(我的 AppRunner 实例无法连接)。我究竟做错了什么?把它们放在同一个安全组和VPC中还不够吗?
我们有一个当前使用 SSL/TLS 证书的 PostgreSQL RDS 实例rds-ca-2019。建议更新到新的 CA。
选项为rds-ca-ecc384-g1、rds-ca-rsa4096-g1、 或rds-ca-rsa2048-g1。
CA 之间有什么区别?
amazon-rds ×10
postgresql ×3
aws-lambda ×2
amazon-iam ×1
amazon-vpc ×1
aws-dms ×1
bastion-host ×1
mysql ×1
pg-trgm ×1
python-3.8 ×1
sqlalchemy ×1
terraform ×1