Запусти:
gunzip -c /mnt/data/dump.gz \
| sed -E \
-e '/^MAC (LABEL|CCR)/d' \
-e '/^ALTER ROLE .* SET ac_session_audit/d' \
-e 's/[[:space:]]*MACS=FALSE,[[:space:]]*//g' \
-e 's/,[[:space:]]*MACS=FALSE//g' \
-e 's/MACS=FALSE//g' \
| gzip > /mnt/data/filtered_dump.gz
После этого обязательно проверь, что WITH (...) не сломался:
gunzip -c /mnt/data/filtered_dump.gz | grep -A10 "CREATE TABLE public._accumrg3035"
Ожидаем увидеть примерно так:
CREATE TABLE public._accumrg3035 (
...
)
WITH (autovacuum_enabled='true', toast.autovacuum_enabled='true');
или, если других параметров не было:
CREATE TABLE ...
;
но не что-то вроде:
WITH (,autovacuum...)
или
WITH ()
Также проверь, что строки MAC действительно исчезли:
gunzip -c /mnt/data/filtered_dump.gz | grep "^MAC "
Ничего вывести не должно.
И проверь, что MACS тоже исчез:
gunzip -c /mnt/data/filtered_dump.gz | grep "MACS="
Тоже не должно быть вывода.
Если эти три проверки проходят, то уже можно восстанавливать:
sudo -u postgres bash -c \
'gunzip -c /mnt/data/filtered_dump.gz | psql postgres 2>&1 | tee /tmp/restore2.log'