From 61752afb26404dfc99a535c7a53f7f04dc110263 Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Sat, 20 Mar 2021 11:46:32 +1300 Subject: Provide recovery_init_sync_method=syncfs. Since commit 2ce439f3 we have opened every file in the data directory and called fsync() at the start of crash recovery. This can be very slow if there are many files, leading to field complaints of systems taking minutes or even hours to begin crash recovery. Provide an alternative method, for Linux only, where we call syncfs() on every possibly different filesystem under the data directory. This is equivalent, but avoids faulting in potentially many inodes from potentially slow storage. The new mode comes with some caveats, described in the documentation, so the default value for the new setting is "fsync", preserving the older behavior. Reported-by: Michael Brown Reviewed-by: Fujii Masao Reviewed-by: Paul Guo Reviewed-by: Bruce Momjian Reviewed-by: Justin Pryzby Reviewed-by: David Steele Discussion: https://postgr.es/m/11bc2bb7-ecb5-3ad0-b39f-df632734cd81%40discourse.org Discussion: https://postgr.es/m/CAEET0ZHGnbXmi8yF3ywsDZvb3m9CbdsGZgfTXscQ6agcbzcZAw%40mail.gmail.com --- src/backend/utils/misc/postgresql.conf.sample | 1 + 1 file changed, 1 insertion(+) (limited to 'src/backend/utils/misc/postgresql.conf.sample') diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index b0b49b38233..86425965d0d 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -761,6 +761,7 @@ #restart_after_crash = on # reinitialize after backend crash? #remove_temp_files_after_crash = on # remove temporary files after # backend crash? +#recovery_init_sync_method = fsync # fsync, syncfs (Linux 5.8+) #data_sync_retry = off # retry or panic on failure to fsync # data? # (change requires restart) -- cgit v1.2.3