我写了一个节点程序,批量插入到数据库中,并为每个完成的插入做一个控制台日志。
function insert(){
var sql = "insert into todo (user, content) values (xx, xx);" +
"insert into todo (user, content) values (xx, xx);" +
"insert into todo (user, content) values (xx, xx);" +
(..
我有一个使用将数据加载到amazon RDS PostgreSQL实例中的node.js ETL系统。突然之间,我开始在向数据库中插入记录时看到随机的超时错误:
TimeoutError: ResourceRequest timed out
at ResourceRequest._fireTimeout (/home/ubuntu/myproject/etl/node_modules/generic-pool/lib/ResourceRequest.js:62:17)
at Timeout.bound (/home/ubuntu/myproject/etl/node_modul
我有一个运行MySQL5.5的多AZ AWS RDS实例
我已经注意到,尽管DB连接很低(有时甚至为零),但我的写入操作/秒仍在相当快地增长--请参阅图表中的Avg growing /秒在过去12个月和最后2周中的使用情况,以及Avg DB连接在过去2周中的情况:
📷
📷
📷
我知道总体上写操作系统/秒的水平很低,但是我预计在接下来的几个月里会有更多的文件(比如100倍),并且希望确保我能解决所有的问题。
我在试着弄清楚是什么导致了这些写操作。我尝试连接到RDS实例并执行:
show full process list
这表明:
+--------+----------+-----------
操作系统为ubuntu 16.04
MySQL版本:MySQL Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
在我的系统中
/etc/mysql/ -> ls
conf.d debian.cnf debian-启动my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我的一个RDS mysql数据库给了我关于占用大量空间的缓慢查询日志的警告。
日志每小时旋转一次,并包含十几次重复:
/rdsdbbin/mysql/bin/mysqld, Version: 5.6.13-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
是什么导致了这一切?
我看到有一个很好的选项,如何启用日志慢查询和没有索引的查询:
SET GLOBAL log_queries_not_using_indexes=1;
SET GLOBAL log_slow_queries=1;
好的,好的,但是它们似乎都写入了我在my.cnf配置文件中指定的同一个日志文件:
[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
我使用mysqldumpslow查看最慢的查询,但是我需要做什么才能单独查看那些没有索引的查询呢?
我在Server中设置了一个审计,它将审计日志(.sqlaudit文件)保存到RDS,然后使用标准流程将其复制到S3。我在读取这些审计文件时可以找到的所有文档都使用以下查询从RDS读取它们:
SELECT *
FROM msdb.dbo.rds_fn_get_audit_file
('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit'
,default,default)
RDS有一个名为RETENTION_TIME for Server审核的选项设置,它允许您在从RDS实例中删除文件之前指定最多840小时。我需要能够在较长时间内读取审计文