Re: could not access status of transaction pg_multixact issue

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: could not access status of transaction pg_multixact issue
Дата
Msg-id 20141010162623.GO7043@eldon.alvh.no-ip.org
обсуждение исходный текст
Ответ на Re: could not access status of transaction pg_multixact issue  (jim_yates <pg@wg5jim.net>)
Список pgsql-sql
jim_yates wrote:
> Alvaro Herrera-9 wrote
> > jim_yates wrote:
> > 
> >> Then I'm really confused.  
> >> The minimum relminmxid for all the rows in pg_class that have relminmxid
> >> greater then zero is 1.
> >> That's the current value of datminmxid in pg_database.  
> >> 
> >> And the NextMultiXactId from pg_controldump is  303464.
> >> 
> >> So if I use the min value from pg_class then I have some other issue.  
> >> 
> >> Where should I get the new pg_database value from?
> > 
> > I'm deep in another issue which I don't want to page out right now, but
> > try vacuuming the tables that have relminmxid=1 with low values set for
> > vacuum_multixact_freeze_table_age and vacuum_multixact_freeze_min_age,
> > say 100000.  (I think 65536 ought to get you beyond segment
> > pg_multixact/offset/0000, and then that file would be removed.) Since
> > any multixact values below the point at which pg_upgrade ran should be
> > marked "no longer running" through hint bits, there would be no
> > pg_multixact lookups anyway and thus the vacuuming should complete with
> > no errors.
> > 
> > -- 
> > Álvaro Herrera                http://www.2ndQuadrant.com/
> > PostgreSQL Development, 24x7 Support, Training & Services
> 
> I set vacuum_multixact_freeze_table_age and vacuum_multixact_freeze_min_age
> to 100,000 and vacuumed all the tables with a relminmxid='1' and relkind='r'
> using pg_class as the source.
> I still couldn't vacuum or select the original table with the issue. 
> I did solve the problem by dropping the table and restoring from my standby
> server.

It might have proven interesting to look into the actual values related
to the multixact that caused you grief.  It's not clear to me whether
the 187k value you got in the error message came from before the upgrade
or after.  If it's prior to the upgrade, there should have been no
lookup of it; if it was after, the pg_multixact files should have been
there.

I wonder if this is somehow related to this problem:
http://www.postgresql.org/message-id/20140330040029.GY4582@tamriel.snowman.net

> Is there else anything I need to do to prevent being bitten by this bug
> again?

Supposedly it's a one-time thing after the upgrade.

> I still have a value of 1 for datminmxid in pg_database, and the 0000 file
> is still in pg_multixact/members and offsets.

Eventually the datminmxid should advance.   Make sure the minimum
relminmxid is no longer 1.

-- 
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services



В списке pgsql-sql по дате отправления:

Предыдущее
От: jim_yates
Дата:
Сообщение: Re: could not access status of transaction pg_multixact issue
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [GENERAL] Any postgres API available to get errorcode for PQerrorMessage