GREENPLUM在主节点的/data/master/gpseg-1/pg_log目录下保存了大量的CSV文件,记录了数据库的操作日志。共有四类,FATAL-严重告警,ERROR-错误,WARNING-警告,LOG-操作日志。由于是文本文件所以查询检索很不方便,经过观察,发现这些文件是有固定格式的,于是想到是不是可以建立外部表来查询,说干就干。
1、启动这个目录的GPFDIST服务:
nohup gpfdist -d /data/master/gpseg-1/pg_log -p 8081
&
2、分析结构,建立外部表:
CREATE READABLE EXTERNAL TABLE pg_sql(rec_time
varchar,username varchar,databasename varchar,proc_id varchar,th_id
varchar,from_id varchar,no1 varchar,ora_time varchar,no2
varchar,no3 varchar,no4 varchar,master_id varchar,no5 varchar,no6
varchar,no7 varchar,no8 varchar,sql_type varchar,no9
varchar,statement varchar,no10 varchar,no11 varchar,no12
varchar,no13 varchar,no14 varchar,sql_text varchar,no15
varchar,no16 varchar,no17 varchar,no18 varchar,no19 varchar )
LOCATION ('gpfdist://localhost:8081/*.csv') FORMAT 'CSV' (DELIMITER
AS ',') ENCODING 'utf-8';
3、执行SQL语句查询:
select rec_time,username
,databasename,proc_id,th_id,from_id,ora_time,master_id,sql_type,statement,sql_text
from pg_sql where statement like 'statement: %insert%zht%' and
statement not like '%select sql_text from pg_sql where statement
like%' order by rec_time;
总结:以后需要查告警和SQL历史就容易多了。如果是数据量不大的丢失也可以通过这种方式给插入回去了。