自回答此问题以来,AWS Tools for Powershell已经发布,我基本上遇到了同样的问题:我在一个AWS账户上有一个RDS快照,我希望将其转移到另一个账户.
到目前为止,我已经能够使用Get-RDSDBSnapshotcmdlet 选择我想要的快照,并且我想要获取该Amazon.RDS.Model.DBSnapshot对象并在其他帐户中使用它.
我一直在环顾四周,我认为Restore-RDSDBInstanceFromDBSnapshotcmdlet(映射到rds-restore-db-instance-from-db-snapshot)可能是我正在寻找的,但我不相信我理解它的行为 -是否可以使用此cmdlet从我的第一个帐户获取快照,并将其还原到第二个帐户中的实例?
我特别关注Snapshot对象中是否存在任何特定于帐户的详细信息,或者是否会阻止该数据跨帐户移动的cmdlet的处理.如果存在一个问题,我会使用比PowerShell更通用的解决方案.
我们遇到了与mysql服务器超时连接的间歇性问题.我们收到的错误如下.
(2003, 'Can\'t connect to MySQL server on \'<connection>\' ((2013, "Lost connection to MySQL server during query (error(104, \'Connection reset by peer\'))"))')
Callstack:
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 818, in _connect
2003, "Can't connect to MySQL server on %r (%s)" % (self.host, e))
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 626, in __init__
self._connect()
更多信息:
错误本身看起来是从ec2上关闭的tcp连接生成的.我们的TCP保持活动时间设置为7200秒,并且当错误被触发时.
我的问题是如何找出这些打嗝发生的原因?很棒的是,它们并不经常发生,但它们发生的并不理想.
任何建议将不胜感激!
更新10/29:
我一直在运行一个服务检查,看看我是否在sql服务器上运行了任何长进程,看起来这些错误没有达到那么远.永远不会为此连接创建新进程!我仍然收到了打嗝,没有任何关联的迹象.
无论如何从快照恢复Amazon RDS实例但跳过在它结束后立即发生的备份步骤?
使用最新的Aurora更新(1.8),LOAD DATA FROM S3引入了该命令.有没有人得到这个工作?升级到1.8之后,我按照设置指南在此处创建角色以允许从RDS访问S3.
重新启动服务器并尝试运行命令后
LOAD DATA FROM S3 PREFIX 's3://<bucket_name>/prefix' INTO TABLE table_name
Run Code Online (Sandbox Code Playgroud)
在SQL Workbench/J中,我得到错误:
Warnings:
S3 API returned error: Missing Credentials: Cannot instantiate S3 Client
S3 API returned error: Failed to instantiate S3 Client
Internal error: Unable to initialize S3Stream
Run Code Online (Sandbox Code Playgroud)
是否还需要其他步骤?我可以只从SDK运行吗?我没有在文件中的任何地方看到这一点
amazon-s3 amazon-web-services amazon-rds amazon-aurora aws-rds
问题概述 我们的AWS RDS实例在大约7-14天后开始减速,这是一个相当大的因素(特定查询集的加载时间约为400%).RDS监测没有显示出资源短缺的迹象.(有关详细问题说明,请参阅下面的问题更新)
因此,经过一个多月的调查和AWS的一些开发人员支持,我并不完全接近解决方案.
以下是我检查列表的几个步骤,或多或少没有任何进一步的问题提示:
为了解释,使用过的PlayFramework(2.3.8)有BoneCP,我们使用eBeans来选择我们的数据.所以基本上我正在运行一个嵌套对象和所有这些子对象,这为所讨论的API调用产生了几百个准备好的SELECT.对于使用过的硬件,这基本上也应该没问题,这些操作都不会广泛使用CPU和RAM.
我还包括NewRelic以获得有关此问题的更多见解,并进行了一些JVM概要分析.显然,大部分时间都是由NETTY/eBeans消耗的?

有人能理解这个吗?
原始问题:问题大纲
我们的AWS RDS实例在大约7-14天后开始放慢一个相当大的因素(特定查询集的加载时间约为400%).RDS监测没有显示出资源短缺的迹象.
基础设施
我们为AWS EC2实例上的移动应用程序运行PlayFramework后端,连接到AWS RDS MySQL实例,一个PROD环境,一个DEV环境.通常PROD EC2实例指向PROD RDS实例,而DEV EC2指向DEV RDS(来自队长的嗨明显!); 但有时我们也会让DEV EC2指向PROD DB进行某些测试.正在使用的PlayFramework正在与BoneCP合作.
详细问题描述
在一个非常重要的同步过程中,我们的应用程序每个用户每天多次进行一次API调用.我在这个SO问题中讨论了功能的背景,感谢评论,我可以将问题归结为某种类型的MySQL问题.
简而言之,API调用正在加载一组数据,最大约为1MB的json数据,目前大约需要18s才能加载.当事情运行得非常好时,这需要大约4秒才能加载.
很奇怪,上次"解决"问题的是将RDS实例升级到另一个实例类型(从db.m3.large到db.m4.large,这只是一个非常小的步骤).现在,大约2-3周后,RDS实例再次像以前一样缓慢运行.重新启动RDS实例显示无效.同样重新启动EC2实例也没有效果.
我还检查了受影响的mySQL表的索引是否设置正确,情况就是这样.API调用本身不是急于加载任何BLOB字段或类似的,我仔细检查了这一点.在大多数情况下,RDS实例的CPU使用率低于1%,当我用100个同时API调用对其进行压力测试时,它达到了约5%,因此这不是瓶颈.内存也很好,所以我猜RDS实例没有开始交换,这可能会减慢整个过程.
提供确凿的证据,DEV环境上的(较小的)公共API调用目前需要2.30秒负载,在PROD环境中需要4.86秒.这很有趣,因为DEV环境在EC2和RDS中都有一个小得多的实例类型.所以基本上乌龟在这里赢得比赛.(如果您对此API调用感兴趣,我很乐意通过PN与您分享,但我真的不想发布API调用的链接,即使它们基本上是公开的.)
结论
最后,感觉(我有点说'感觉')就像数据库在使用x天后/在一定量的API调用之后被阻塞了.不确定这是否是特定于RDS的问题,一旦我"通过更改实例类型"重置数据库实例,事情就会快速而平稳地运行.但是,每两周从快照重新创建我的数据库实例不是一种选择,特别是如果我不明白为什么会发生这种情况.
您有什么想法可以采取哪些进一步措施来调查此事吗?
我在名为 X 和 Y 的服务器上运行了 2 个 MySQL 数据库,它们都具有相同的内容。一整天都在运行一系列更新,这会更改 X 的内容。在一天结束时,会运行一个过程,将 X 的内容与 Y 的内容(对于各种表)进行比较,以发现新行,更新行数据等。一旦更新被处理,mysqldump用于转储 X,然后用转储覆盖 Y。X 和 Y 现在再次相同,并且整个过程重复。
我正在研究将这些数据库迁移到 Amazon RDS。完成上述过程的最有效方法是什么?
我知道我可以拍摄数据库的快照并恢复它,但我认为这仅在实例级别?这意味着我必须运行 2 个实例,这似乎没有必要。我在同一个实例上运行两个数据库没有问题(我不想不必要地为多个实例付费)。
我只是做我现在正在做的事情,即mysqldumpX 并将其恢复到 Y,还是 RDS 提供了其他一些方法/快捷方式?
AWS RDS的三个指标是什么:可用内存(增强监控),活动内存(增强监控)和可用内存(CloudWatch监控)?
他们之间有什么关系?
看看这两张照片.
三个指标的价值是不同的.
的形象 在这里输入图像描述
我在这里面临一些非常奇怪的问题.我们在AWS EC2上托管了一个laravel API,我们使用RDS(mysql 5.6).我最近在RDS上启用了performance_schema.以下是我注意到的行为
所以看起来只有当我们的Laravel应用程序执行查询时,它们才会被跟踪.
我们的Laravel版本是4.2.我试图找出最近两天的原因,任何帮助都将是一种解脱.
我在上述所有步骤中使用的用户都是相同的,并且拥有所有数据库的所有权限.
- 编辑 -
我进行了许多其他测试,他们都只指出了一个与Laravel有关的结论.我在托管laravel的同一台服务器上创建了一个简单的php文件.在此文件中,我使用相同的用户/密码连接到相同的实例/数据库.我在这个文件中所做的只是在$ pdo上运行一个非常简单的查询.
$stmt = $pdo->query('SELECT name FROM trades');
while ($row = $stmt->fetch())
{
echo $row['name'] . "\n";
}
Run Code Online (Sandbox Code Playgroud)
它出现在查询分析[ https://prnt.sc/j3ochd]中(我手动检查了performance_schema.events_statements_summary_by_digest)
但是我可以点击我们的laravel api,它实际上返回了交易表本身的条目(非常类似于我上面运行的查询).但这会出现在我的查询分析报告(Percona PMM)或events_statements_summary_by_digest中
我正在使用 Fargate 和 RDS 为我的 Web 应用程序设置基础设施。
以下是基础设施的基本细节。
现在的问题是,Fargate 容器应用无法连接到 RDS
有人可以建议如何配置安全组或其他边界以允许容器连接 RDS。
如果我将 RDS SG 配置更改为 RDS 端口和 IP 作为 0.0.0.0/0 (Anywhere) 容器应用程序能够连接到 RDS。但这我们将无法在 UAT / PROD 中做到
昨天 AWS 为 PostgreSQL 推出了 Aurora serverless,但它似乎没有与其他 RDS 数据库相同的配置选项,例如我无法将其设置为面向公众,它迫使我拥有一个 VPC。
现在,我不知道如何将这些 VPC 内容应用到 PgAdmin,我尝试将安全组的入站设置为所有端口和 ip,但它仍然无法连接(没有服务器响应)。
如何使用 PgAdmin 连接到 VPC 内的 RDS 数据库?打开安全组不起作用。
amazon-rds ×10
mysql ×4
amazon-s3 ×1
aws-fargate ×1
aws-rds ×1
boto3 ×1
database ×1
django ×1
laravel ×1
laravel-4 ×1
netty ×1
pgadmin ×1
powershell ×1
pymysql ×1