Re: Orphaned relations after crash/sigkill during CREATE TABLE

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Orphaned relations after crash/sigkill during CREATE TABLE
Дата
Msg-id 389e7d59-666e-d73b-5582-f30316a10644@aklaver.com
обсуждение исходный текст
Ответ на Orphaned relations after crash/sigkill during CREATE TABLE  (Jason Myers <j.myers@brstrat.com>)
Ответы Re: Orphaned relations after crash/sigkill during CREATE TABLE
Re: Orphaned relations after crash/sigkill during CREATE TABLE
Список pgsql-general
On 8/18/20 12:35 PM, Jason Myers wrote:
> Postgres 12.4
> 
> I was directed in slack to mention here that we're being impacted by 
> Postgres leaving orphaned pages in /base/<db> after a crash while a 
> CREATE TABLE is being run in transaction.
> 
> The issue is the same as the reproduction steps listed here [1], that is:
> 
> - Start a CREATE TABLE transaction for a large table
> - Terminate the process via kill -9
> - Pages are left in /base that have no filenode references anymore, such 
> that `pg_database_size()` grows to be very large while total table+index 
> size remains constant

So from [1] you are using CREATE TABLE AS. Have you tried with:

BEGIN;
CREATE TABLE some_table SELECT some_data FROM other_table LIMIT 1 WITH 
NO DATA;
COMMIT;

The above gets you the table structure, but no data.

BEGIN;
INSERT into some_table SELECT * FROM other_table;
COMMIT;

The above populates the table. Have not tested but I'm going to assume 
if you kill the above the problem would not happen or would be fixable 
by DELETE FROM some_table/TRUNCATE some_table;


> 
> However in our particular case, we're using a managed/cloud Postgres 
> server and our `CREATE TABLE` transaction was being terminated by the 
> OOM killer.  Using a managed service, we don't have filesystem access to 
> go and clear out these orphaned pages.  This caused our total db size to 
> grow from 40GB of table+index data to 4TB on-disk (but still only 40GB 
> of table+index data, the other ~3.95TB being orphaned CREATE TABLE pages)
> 
> I realize (per a blog post from Robert Haas [2] and from slack 
> conversation) that this is a known issue, but was directed here from 
> slack to just mention that we were impacted by it, and have no 
> resolution due to not having filesystem access, and not having a method 
> internally to Postgres to deal with these orphaned relations.  (Our 
> recourse currently is to do something like a pg_dump/pg_restore onto a 
> clean instance in order to escape the orphaned files)
> 
> -Jason
> 
> [1] https://github.com/bdrouvot/pg_orphaned#example-1
> [2] 
> https://rhaas.blogspot.com/2020/05/dont-manually-modify-postgresql-data.html
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



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

Предыдущее
От: Jason Myers
Дата:
Сообщение: Orphaned relations after crash/sigkill during CREATE TABLE
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: Index tuple deduplication limitations in pg13