]> git.ipfire.org Git - thirdparty/postgresql.git/commit
initdb: Add --no-sync-data-files.
authorNathan Bossart <nathan@postgresql.org>
Tue, 25 Mar 2025 21:02:35 +0000 (16:02 -0500)
committerNathan Bossart <nathan@postgresql.org>
Tue, 25 Mar 2025 21:02:35 +0000 (16:02 -0500)
commitcf131fa942855acd42e8283185837566c7e8c15e
tree71489db5f05e62c72c9e0ca22e7eb505a44c26fd
parent650ab8aaf1957863ae14c80265e79f5d903b49fd
initdb: Add --no-sync-data-files.

This new option instructs initdb to skip synchronizing any files
in database directories, the database directories themselves, and
the tablespace directories, i.e., everything in the base/
subdirectory and any other tablespace directories.  Other files,
such as those in pg_wal/ and pg_xact/, will still be synchronized
unless --no-sync is also specified.  --no-sync-data-files is
primarily intended for internal use by tools that separately ensure
the skipped files are synchronized to disk.  A follow-up commit
will use this to help optimize pg_upgrade's file transfer step.

The --sync-method=fsync implementation of this option makes use of
a new exclude_dir parameter for walkdir().  When not NULL,
exclude_dir specifies a directory to skip processing.  The
--sync-method=syncfs implementation of this option just skips
synchronizing the non-default tablespace directories.  This means
that initdb will still synchronize some or all of the database
files, but there's not much we can do about that.

Discussion: https://postgr.es/m/Zyvop-LxLXBLrZil%40nathan
doc/src/sgml/ref/initdb.sgml
src/bin/initdb/initdb.c
src/bin/initdb/t/001_initdb.pl
src/bin/pg_basebackup/pg_basebackup.c
src/bin/pg_checksums/pg_checksums.c
src/bin/pg_combinebackup/pg_combinebackup.c
src/bin/pg_rewind/file_ops.c
src/common/file_utils.c
src/include/common/file_utils.h