AWS Aurora服务器有时会响应"未知数据库:..."

时间:2017-01-20 01:38:26

标签: c# mysql .net amazon-web-services amazon-rds-aurora

我有一个.NET应用程序,它在Amazon Aurora RDS中的MySQL数据库上执行查询。该数据库是MySQL 5.6数据库 - Aurora附带的版本。

我对数据库中的模式(名称:flight)执行查询(名称:SSIMLoader)。我正在使用MySQL 6.9.8.0库。

编辑:连接字符串指向群集中的主服务器,而不是指向特定服务器。

执行插入,选择和更新时发生错误,因此没有真正的模式。即使简单的select语句也会随机失败

但是,在通过MySQL工作台执行查询时,我们没有收到此类错误。

重新启动服务器后,错误会消失几天然后返回。

我们有一些非常激烈的查询会在长时间内将CPU提高到90%,但即使在CPU降低到10%之后,错误仍然存​​在。

有没有其他人经历过这个,如果有的话,你是如何克服它的?

提前致谢。

  • 修改 终于再次得到错误:
      

    MySql.Data.MySqlClient.MySqlException(0x80004005):未知数据库'航班'   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()   at MySql.Data.MySqlClient.NativeDriver.ReadOk(Boolean read)   at MySql.Data.MySqlClient.MySqlConnection.ChangeDatabase(String databaseName)   at MySql.Data.MySqlClient.MySqlConnection.Open()   at MySql.Data.MySqlClient.MySqlConnection.Open()   在Universal.Access.Database.BaseDatabaseConnection.EstablishFactoryConnection()   在Universal.Access.Database.BaseDatabaseConnection.ExecuteReader(CommandType commandType,CommandText commandText)   在C:\ tc-projects \ universal-platform \ Universal.Core \ DataModel \ ExecutableDatabaseConnection.cs:第65行的Universal.Core.DataModel.ExecutableDatabaseConnection.ExecuteQuery(String sqlQuery)中

这是正在运行的查询:

  

UP-DEV | Universal.Core.Data.Importer Error finding current record, SQL: SELECT aircraft_config,updated_by,asa_flight_id,atd_utc,bay,terminal,is_cancelled,flight_number,created_at,from_iata,flight_date_utc,std_local,takeoff_time_local,is_international,is_aerocare,cobt_local,customer_atd_local,takeoff_time_utc,std_utc,atd_local,asa_state,aircraft_type,customer_atd_utc,carrier_code,updated_at,gate,service_type,etd_local,cobt_utc,flight_status,etd_utc,aircraft_rego,created_by,id,flight_date,to_iata FROM flight.departure_flight WHERE carrier_code='JQ' AND flight_date_utc='2017-01-20T00:00:00' AND flight_number='57' AND from_iata='MEL'. Database returned: Unknown database 'flight'

2 个答案:

答案 0 :(得分:5)

虽然我不确定具体触发问题的原因(看起来开放连接可能会以某种方式在RDS集群端以破坏状态结束),但似乎这个问题因激进的连接池而烦恼并在MySQL .NET Connector中发生的客户端重用。

问题发生后,受影响的连接似乎只停留在池中,从池中任意选择并重复使用。 (很可能与你如何看到问题在开始后继续随机发生有关。)

Connection Lifetime=x添加到连接字符串,x是连接保持活动状态以便重复使用的时间(以秒为单位),似乎至少可以减少症状。

答案 1 :(得分:1)

因此,当Aurora实例cpu为100%时,似乎会发生此错误。 连接找不到指定的数据库,因为它无法连接到实例,因为没有剩余的线程来建立连接。