我们有一个部署在AWS RDS上的定制CRM系统。我们的FE和BE系统是JavaScript,数据库禁止JS开发人员直接操作数据库。它们必须通过预定义的API或受控的查询系统。它工作得很好,开发人员从来没有设法伤害数据库:)
**更新:受控查询系统强制JSON结构作为前端和后端系统更新,插入和删除记录的唯一方法。数据库监控JSON结构并相应地处理它们,包括剥离和拒绝不符合特定准则的数据和请求。
数据库有自己的内部错误报告系统,工作得很好,主要是因为JS开发人员通常不会报告存储过程调用失败(grr)的错误。因此,数据库在跟踪表中报告这些错误。这样,我们就可以看到JS开发人员发送了哪些错误的有效负载,或者捕捉到SQL中偶尔出现的错误。
更新:内部错误报告系统正是如此;任何时候存储过程触发未处理的错误时,它都会将错误写出到由数据库团队监视的错误表中。它存在于核心数据库级别,与查询控制系统无关。
问题是,我们已经部署了数据库的Read Error,现在内部错误报告系统在RR调用失败时变得毫无用处。
有没有一种技术或方法可以让RR以某种方式将写出调用发送给主服务器?还是必须切换到日志文件系统?如果我必须这样做,它几乎需要我们放弃我们的主错误表跟踪。
所以我想核心问题是:对于一个使用读取副本的企业级CRM数据库,我们应该考虑使用什么内部MySQL错误报告系统和技术?
谢谢你,谢谢
2条答案
按热度按时间yi0zb3m41#
RDS读取复制副本无法向源示例发送查询。
对于一个使用读取副本的企业级CRM数据库,我们应该考虑使用什么内部MySQL错误报告系统和技术?
检测并报告处理请求的后端代码(而不是存储过程)中的无效有效负载。
您的代码可以将错误请求记录到您想要的任何示例。我的意思是,您可以将错误记录到源示例,即使请求(一旦验证)将导致在读取副本示例上执行存储过程。
但我建议将错误请求记录到其他日志系统,而不是数据库。错误请求与数据库中的任何其他数据无关,它只是增加了更多的存储负载和查询负载,以便在数据库中记录错误请求。
AWS目前提供名为Centralized Logging with OpenSearch的服务。这听起来像是一个可能的候选人,向其发送错误请求的报告,但我没有使用过这个AWS服务,所以我不能报告任何经验。这只是我所说的一个例子。
日志记录系统通常比使用成熟的RDBMS来完成该任务更简单,成本更低。
eoxn13cs2#
大方向是比尔在答复中所说的。我会加一些AWS特有的味道
在AWS中,错误日志记录的位置是CloudWatch。它非常容易设置和使用,而且与在RDS中存储错误日志相比非常便宜。
流程是这样的:
1.一旦后端应用程序示例启动,create a log stream。将执行此操作的代码放入应用程序启动代码中。
1.将验证逻辑和数据库调用 Package 到try-catch块中。如果验证器或数据库调用抛出异常,则put an event将异常描述放入日志流中。
有一个很好的库叫winston,有一个CloudWatch plugin,可以为你处理所有这些。
CloudWatch具有一些基本的分析和搜索功能,这可能足以满足您的用例。如果不是,你可以使用大量的服务,如Quicksight(AWS本地); Kibana,Splunk,NewRelic(第三方)等,所有这些都可以轻松地与CloudWatch集成。
详细描述它们超出了这个答案的范围,但是它们中的每一个都比在RDS中存储日志数据更方便,操作成本更低。