Digging deeper on this, I found that HAWQ has been trying to auto vacuum
hcatalog for months now with the following error:

2018-09-16 14:19:01.646399
UTC,"xxx","yyy",p252354,th493275424,"11.22.33.44","58083",2018-09-16
14:18:57
UTC,0,con433331,cmd114,seg0,slice1,,,sx1,"LOG","00000","GetNewTransactionId:
requesting autovac (xid 1932591104 xidVacLimit 200000003)",,,,,,"select
Ta.client_commissioned_measurement_methodology as v,
count(Ta.client_commissioned_measurement_methodology)::float4/588.000000::float4
as f from my_schema.my_table as Ta where
Ta.client_commissioned_measurement_methodology is not null group by
(Ta.client_commissioned_measurement_methodology) order by f desc limit
25",0,,"varsup.c",98,
2018-09-16 14:19:01.663978
UTC,,,p252782,th493275424,,,,0,,,seg-10000,,,,,"ERROR","3D000","""hcatalog""
database is only for system use",,,,,,,0,,"postinit.c",386,

hcatalog being a system database (and one that isn't even real technically)
seems to be causing the issue. I have successfully vacuumed the others.

John Glorioso
Lead Engineer
[email protected]




On Wed, Oct 17, 2018 at 9:19 AM John Glorioso <[email protected]> wrote:

> I believe the issue is the FREEZE vacuum option. Is there a setting in
> config that I can verify? Better yet since we no longer use hcatalog to
> connect to hive is there a way to just simply disable or clear
> datfrozenxid? I don't imagine dropping hcatalog would work and I am
> hesitant to try to manually update that value to null.
>
> -John
>
> On Wed, Oct 17, 2018, 1:49 AM Paul Guo <[email protected]> wrote:
>
>> Looks like HAWQ should do auto-vacuum for those databases which DBA can
>> not connect?
>>
>>
>> John Glorioso <[email protected]> 于2018年10月17日周三 上午6:32写道:
>>
>>> We are running a decent sized cluster (20 nodes) and have started
>>> receiving the following error today:
>>>
>>> WARNING:  database "hcatalog" must be vacuumed within 42324912
>>> transactions  (seg27 worker09.xxx.com:40000 pid=689628)
>>> HINT:  To avoid a database shutdown, execute a full-database VACUUM in
>>> "hcatalog".
>>>
>>> I found this Pivotal article:
>>>
>>> https://community.pivotal.io/s/article/About-XIDs-and-XID-Wraparound-in-Greenplum
>>> which discusses xid wrap around and that led me to running a query which
>>> identified tables in each database that need a vacuum freeze run against it.
>>>
>>>
>>> https://community.pivotal.io/s/article/Vacuuming-Old-Tables-in-a-Database-to-Reduce-its-Age
>>>
>>> The issue, however, is that it is complaining about the hcatalog
>>> database which is not an accessible database as it was used to query data
>>> in Hive at one point. We have since disabled Hive and no longer need that
>>> external PXF link but I am unclear on how to remove it.
>>>
>>> This article shows how to detect database age and I can run the first
>>> part but it is for Greenplum and I do not know the equivalent properties in
>>> HAWQ for the case statement to work.
>>>
>>>
>>> https://community.pivotal.io/s/article/How-to-check-database-age-in-Greenplum
>>>
>>> The results for the following sql statement are below:
>>>
>>> SELECT gp_segment_id, datname, age(datfrozenxid) age FROM pg_database
>>> UNION ALL
>>> SELECT gp_segment_id, datname, age(datfrozenxid) age FROM
>>> gp_dist_random('pg_database');
>>>
>>>  gp_segment_id |  datname   |    age
>>> ---------------+------------+------------
>>>             -1 | hcatalog   |  212776719
>>>             -1 | template1  |      39104
>>>             -1 | template0  |  212775841
>>>             -1 | production |   10604565
>>>             -1 | postgres   |      39104
>>>             -1 | gpadmin    |      39104
>>>              0 | template1  | 2100536422
>>>              0 | hcatalog   | 2100537300
>>> (8 rows)
>>>
>>> I cannot access hcatalog or template1 to issue vacuum freeze statements
>>> against the tables and am unsure how to proceed.
>>>
>>> Any help is greatly appreciated!
>>>
>>> John Glorioso
>>> Lead Engineer
>>> [email protected]
>>>
>>>
>>>

Reply via email to