Není to normální - těžko říct, v čem je problém, ale v uložených procedurách a constrainech to nebude. To se aktivuje až nakonec (Postgres důvěřuje svému exportu). Vzpomínám si, že před 15roky 50GB databáze se restorovala 2 hodiny (včetně dumpu).
Co může být problém - buďto málo RAM, pomalé IO, možná používáte GIN indexy, které jsou náročnější na vytvoření. Zkuste restore na jiném železe, případně se podívejte, co vám restore vypisuje a na čem to vázne. 20GB bych čekal do půl hodiny.