标签: aws-aurora

优化AWS Aurora实例的写入性能

我有一个运行的AWS Aurora数据库集群,99.9%专注于写入.在它达到峰值时,它将以每秒2-3k的速度运行.

我知道Aurora在默认情况下对写入有所优化,但我想问一下AWS的相对新手 - Aurora的写性能最佳实践/技巧是什么?

mysql database amazon-web-services amazon-aurora aws-aurora

11
推荐指数
3
解决办法
6580
查看次数

如何使用xpath表达式在PostgreSQL中的XML列上创建索引?

尝试在AuroraDB上使用xpath表达式的XML数据类型列上创建btree索引时遇到此错误 - PostgreSQL 9.6:

ERROR:  could not identify a comparison function for type xml
SQL state: 42883
Run Code Online (Sandbox Code Playgroud)

没有明确解决方案的这个2009线程是我发现讨论此错误消息的唯一一个关于为更早版本的PostgreSQL创建基于xpath的索引:https: //www.postgresql-archive.org/Slow-select -times上选,用,XPath的td2074839.html

在我的情况下,我也需要指定名称空间,并且该线程中的原始海报将xpath表达式的结果转换为text [],这对我来说也是错误的 - 但为什么甚至需要呢?我也没有看到PostgreSQL使用我的索引,即使我有数千行要经过.

所以我尝试了一个更简单的案例,但错误仍然存​​在 - 请详细说明为什么你可以:

CREATE TABLE test
(
    id integer NOT NULL,
    xml_data xml NOT NULL,
    CONSTRAINT test_pkey PRIMARY KEY (id)
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;



CREATE INDEX test_idx
    ON test USING btree 
    (xpath('/book/title', xml_data))
Run Code Online (Sandbox Code Playgroud)

结果消息是:

ERROR:  could not identify a comparison function for type xml
SQL state: 42883
Run Code Online (Sandbox Code Playgroud)

数据库编码是UTF8.排序规则和字符类型为en_US.UTF-8.

一些示例插入语句也是: …

xml postgresql indexing xpath aws-aurora

8
推荐指数
1
解决办法
810
查看次数

使用无服务器Aurora时确定连接超时,以寻找增加超时时间或重试连接的方法

我在尝试将无服务器Aurora数据库用作应用程序的一部分时遇到问题。

问题本质上是,当数据库处于冷态时,建立连接的时间可能大于30秒(由于db spinup)-这似乎比Sequelize中的默认超时(使用mysql)长,并且据我所知可以看到我找不到其他方法来增加此超时,或者我需要某种重新尝试连接的方法吗?

这是我当前的配置:

const sequelize = new Sequelize(DATABASE, DB_USER, DB_PASSWORD, {
    host: DB_ENDPOINT,
    dialect: "mysql",
    operatorsAliases: false,
    pool: {
      max: 2,
      min: 0,
      acquire: 120000, // This needs to be fairly high to account for a 
      serverless db spinup
      idle: 120000,
      evict: 120000
    }
});
Run Code Online (Sandbox Code Playgroud)

还有几点要点:一旦数据库变热,那么一切都会正常运行。在技​​术上可行的情况下,保持数据库“热”状态会破坏将其作为无服务器db的意义(成本原因)。如果超时是连接错误,我愿意让我的客户端重试API调用。

这是日志,以防万一。

{
"name": "SequelizeConnectionError",
"parent": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
},
"original": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
}
}
Run Code Online (Sandbox Code Playgroud)

mysql amazon-rds node.js serverless aws-aurora

7
推荐指数
1
解决办法
2684
查看次数

Aurora自动缩放的实例中没有发生相等的连接分配

我们正在使用AWS Aurora作为数据库运行基于REST API的春季启动应用程序。我们的应用程序连接到只读的Aurora MySQL RDS实例。我们正在对其进行负载测试。最初,我们只有一个数据库,并且具有自动缩放功能,这是在CPU较高的情况下触发的。现在,我们期望如果通过一个数据库实例获得一些X吞吐量,那么在自动缩放发生时,我们应该获得大约1.8倍的吞吐量,并且连接应该与新创建的数据库实例平均分配。但这没有发生,相反,两个数据库实例上的数据库连接都不稳定。因此,我们的负载无法平均分配,并且无法获得理想的吞吐量。有时一个数据库正在100%CPU上运行,而另一个数据库仍在20%CPU上运行,几分钟后将其反转。

Driver - com.mysql.jdbc.driver
Maximum active connections=100
Max age = 300000
Initial pool size = 10
Run Code Online (Sandbox Code Playgroud)

Tomcat jdbc池用于连接池

注意:1)我们还禁用了jvm网络DNS缓存。2)我们还尝试每5分钟刷新一次数据库连接,即使活动的连接也是如此。3)我们尝试了AWS提出的所有建议,但没有任何效果。4)我们甚至编写了一个lambda代码来在出现新的数据库实例时更新Route 53,以避免集群端点缓存,但仍然存在相同的问题。任何人都可以请帮忙的最佳实践是什么,因为目前我们还不能将其投入生产。

database database-connection amazon-web-services amazon-aurora aws-aurora

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

Aurora PostgreSQL引擎:设备上没有剩余空间

我正在使用AWS Aurora PostgreSQL 10.4引擎。我正在尝试cluster table ... using index并收到类似的错误

could not write block .... of temporary file: no space left on device
Run Code Online (Sandbox Code Playgroud)

如果要管理自己的PostgreSQL实例,我将使用来查看各个卷上的可用空间df。(另请参见:使用postgresql出现错误“无法写入临时文件的块....设备上没有剩余的空间...”

但是使用Aurora,AWS应该管理存储并根据需要自动扩展它。因此,我想知道如果我自己不管理存储,该如何解决这个问题。我猜想PG引擎的临时存储与Aurora管理的虚拟存储层是分开的,但是不确定如何更改它。

amazon-web-services aws-aurora

5
推荐指数
1
解决办法
525
查看次数

从CloudFormation启用Aurora Data Api

我有一个CloudFormation模板,它使用无服务器无极光创建我的RDS集群。我希望在启用数据API的情况下创建集群。

该选项存在于Web控制台上:https : //docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html

但是我在CloudFormation文档中找不到它。如何从模板打开此选项?

amazon-web-services aws-cloudformation amazon-aurora aws-aurora

5
推荐指数
2
解决办法
734
查看次数

如何使用AppSync解析器和Aurora将可选字段插入为null?

我有一个可选的String字段notes,有时为空。如果为空,我想插入null,否则我想插入字符串。

这是我的解析器-

{
    "version" : "2017-02-28",
    "operation": "Invoke",
        #set($id = $util.autoId())
        #set($notes = $util.defaultIfNullOrEmpty($context.arguments.notes, 'null'))

        "payload": {
          "sql":"INSERT INTO things VALUES ('$id', :NOTES)",
          "variableMapping": {
            ":NOTES" : $notes
          },
          "responseSQL": "SELECT * FROM things WHERE id = '$id'"
        }
Run Code Online (Sandbox Code Playgroud)

}

有了这个graphql

mutation CreateThing{
  createThing() {
    id
    notes
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到-

{
  "data": {
    "createRoll": {
      "id": "6af68989-0bdc-44e2-8558-aeb4c8418e93",
     "notes": "null"
   }
 }
Run Code Online (Sandbox Code Playgroud)

}

当我真的想要没有引号的null时

有了这个graphql-

mutation CreateThing{
  createThing(notes: "Here are some notes") {
    id
    notes …
Run Code Online (Sandbox Code Playgroud)

resolver amazon-web-services graphql aws-appsync aws-aurora

3
推荐指数
1
解决办法
934
查看次数

如何在不停机的情况下更改AWS-RDS实例类型?

我正在使用AWS-RDS(Aurora MySQL5.6),它是一个群集,它有一个写入器实例和一个读取器实例。我发现每个实例在更改类型后都会停机近10分钟,这是不可接受的,我该怎么做才能避免停机?

以下是更多详细信息:

  • 将类型从db.t2.small更改为db.t2.medium
  • 引擎版本:5.6.10a
  • 可用内存:300M
  • 数据库连接(计数):〜400
  • CPU使用率(百分比):〜20%

amazon-rds aws-aurora

2
推荐指数
1
解决办法
811
查看次数