标签: amazon-rds

如何重新同步 AWS RDS 只读副本

有没有办法修复已停止与主数据库同步的只读副本?我已经在删除它并创建一个新的过程中,因为我找不到这个答案,但很高兴知道它是否再次发生。

数据库是带有 Innodb 表的 MySQL 数据库。

amazon-web-services amazon-rds read-replication

6
推荐指数
1
解决办法
9689
查看次数

如何使用 SQLAlchemy 为 RDS 代理设置 TLS

我有一个 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, ssl) = ('true', 'required') 的每种组合。

  • CONN_STR += '?ssl-mode=REQUIRED'
  • create_engine(CONN_STR, connect_args={'ssl': 'True'})

结果各不相同。在某些情况下,上面的错误已被替换AttributeError: 'str' …

mysql sqlalchemy amazon-rds aws-lambda python-3.8

6
推荐指数
1
解决办法
6366
查看次数

从 AWS ECS Fargate 访问 AWS RDS 的最佳方式

我有运行 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 用户)

  1. 我已准备好 RDS 实例以允许 IAM 身份验证
  2. 我已创建 IAM 用户,为其附加新的 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 实例的“配置”选项卡中找到)

  1. 我已经在数据库中创建了用户
CREATE USER iam_user; 
GRANT rds_iam …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds amazon-iam

6
推荐指数
1
解决办法
5834
查看次数

如何通过 cloudformation 在 lambda 中添加数据库代理?

我正在使用 cloudformation 在 AWS 上配置 lambda 和 RDS。但我不知道如何在 lambda 上添加数据库代理。下面的截图来自 lambda 控制台:

在此输入图像描述

云信息支持添加这个吗?我在 lambda 和 db 代理模板中看不到它。

amazon-web-services amazon-rds aws-lambda amazon-rds-proxy

6
推荐指数
1
解决办法
2369
查看次数

为什么 RDS 代理会使性能变差?

我在 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

6
推荐指数
0
解决办法
1780
查看次数

禁用 AWS DMS Migration 中的外键约束不适用于 Postgres

您好,我想将数据从一个 Postgres RDS 实例迁移到另一个实例。但是我的数据库包含具有外键约束的表。根据提供的官方迁移文档,AWS DMS 仅迁移所需的架构,不会迁移外键和其他二级索引。因此,我现在采用的方法是,首先手动迁移架构,然后在目标模式设置为不执行任何操作的情况下运行 DMS 作业。但是,我的加载因外键约束冲突错误而失败,因为 DMS 尝试并行迁移表,并且可能并行选择父子表进行加载。我尝试按照官方文档中的建议设置 session_replication_role=replica 以在会话级别暂时禁用约束,但这似乎也没有得到应用(注意:AWS DMS 文档中说该属性仅适用于 CDC 模式,因此尝试了也一样,但似乎没有得到应用,我面临着同样的外键约束违规问题)。谁能帮助如何实现这一目标?

postgresql data-migration amazon-web-services amazon-rds aws-dms

6
推荐指数
1
解决办法
2424
查看次数

AWS Postgres 设置 pg_trgm.word_similarity_threshold

我正在尝试在 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 中设置此参数吗?


postgresql amazon-web-services amazon-rds terraform pg-trgm

6
推荐指数
1
解决办法
518
查看次数

使用会话管理器在没有 EC2 实例的情况下连接 RDS

当我浏览文档时,使用会话管理器我们可以连接私有子网中的实例,而无需堡垒主机本身[从本地到私有 ec2 的直接端口转发]。

但在 RDS 情况下,即使我们使用会话管理器建立连接,我们也需要在本地和私有 RDS 之间有一个 EC2 实例。

你能解释一下为什么会这样吗?请分享一些解释这一点的文件。

amazon-web-services amazon-rds aws-session-manager bastion-host

6
推荐指数
2
解决办法
3653
查看次数

如何将我的 AppRunner 实例连接到 RDS?

我已使用建议的默认值配置了 RDS,并且没有公共访问权限。

然后,我通过创建 VPC 连接器将 AppRunner 实例放入与 RDS 相同的安全组中。我可以看到两侧列出了相同的 VPC 和子网,但不知为何我仍然无法连接到 RDS(我的 AppRunner 实例无法连接)。我究竟做错了什么?把它们放在同一个安全组和VPC中还不够吗?

amazon-web-services amazon-rds amazon-vpc

6
推荐指数
0
解决办法
244
查看次数

AWS RDS 中可升级的 CA 之间有什么区别?

我们有一个当前使用 SSL/TLS 证书的 PostgreSQL RDS 实例rds-ca-2019。建议更新到新的 CA。

选项为rds-ca-ecc384-g1rds-ca-rsa4096-g1、 或rds-ca-rsa2048-g1

CA 之间有什么区别?

amazon-web-services amazon-rds

6
推荐指数
1
解决办法
1855
查看次数