nagios 外掛引發的 資料庫告警

babyyellow發表於2012-07-13

pg 從庫的日誌裡告警如下:

psql postgres postgres [local] 2012-07-13 09:54:13 CSTERROR:  cannot assign TransactionIds during recovery
psql postgres postgres [local] 2012-07-13 09:54:13 CSTSTATEMENT:  SET statement_timeout=30000;BEGIN;SET statement_timeout=30000;COMMIT;SELECT datname, age(datfrozenxid) FROM pg_database WHERE datallowconn ORDER BY 1, 2

詐一看,蒙了,

在檢視nagios 的告警發現這個warning   check_postgresql_txn_wrapper  這個選項。

看了下程式碼發現了 證實執行了這個查詢 “SELECT datname, age(datfrozenxid) FROM pg_database WHERE datallowconn ORDER BY 1, 2”

在主庫上執行時沒有問題的。可以正確的返回結構,然後去查age() 函式的  

發現age (datfrozenxid)   需要請求一個事務id      而從庫時streaming 複製, 是隻讀訪問的,自然不能分配一個事務id[code]

postgres=# \df age*
                                            List of functions
   Schema   | Name | Result data type |                   Argument data types                    |  Type  
------------+------+------------------+----------------------------------------------------------+--------
pg_catalog | age  | interval         | timestamp with time zone                                 | normal
pg_catalog | age  | interval         | timestamp with time zone, timestamp with time zone       | normal
pg_catalog | age  | interval         | timestamp without time zone                              | normal
pg_catalog | age  | interval         | timestamp without time zone, timestamp without time zone | normal
pg_catalog | age  | integer          | xid                                                      | normal
(5 rows)



[/code]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-735383/,如需轉載,請註明出處,否則將追究法律責任。

相關文章