aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorNathan Bossart <nathan@postgresql.org>2025-03-25 16:02:35 -0500
committerNathan Bossart <nathan@postgresql.org>2025-03-25 16:02:35 -0500
commitcf131fa942855acd42e8283185837566c7e8c15e (patch)
tree71489db5f05e62c72c9e0ca22e7eb505a44c26fd /doc/src
parent650ab8aaf1957863ae14c80265e79f5d903b49fd (diff)
downloadpostgresql-cf131fa942855acd42e8283185837566c7e8c15e.tar.gz
postgresql-cf131fa942855acd42e8283185837566c7e8c15e.zip
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
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/ref/initdb.sgml27
1 files changed, 27 insertions, 0 deletions
diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml
index 0026318485a..2f1f9a42f90 100644
--- a/doc/src/sgml/ref/initdb.sgml
+++ b/doc/src/sgml/ref/initdb.sgml
@@ -527,6 +527,33 @@ PostgreSQL documentation
</listitem>
</varlistentry>
+ <varlistentry id="app-initdb-option-no-sync-data-files">
+ <term><option>--no-sync-data-files</option></term>
+ <listitem>
+ <para>
+ By default, <command>initdb</command> safely writes all database files
+ to disk. This option instructs <command>initdb</command> to skip
+ synchronizing all files in the individual database directories, the
+ database directories themselves, and the tablespace directories, i.e.,
+ everything in the <filename>base</filename> subdirectory and any other
+ tablespace directories. Other files, such as those in
+ <literal>pg_wal</literal> and <literal>pg_xact</literal>, will still be
+ synchronized unless the <option>--no-sync</option> option is also
+ specified.
+ </para>
+ <para>
+ Note that if <option>--no-sync-data-files</option> is used in
+ conjuction with <option>--sync-method=syncfs</option>, some or all of
+ the aforementioned files and directories will be synchronized because
+ <literal>syncfs</literal> processes entire file systems.
+ </para>
+ <para>
+ This option is primarily intended for internal use by tools that
+ separately ensure the skipped files are synchronized to disk.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="app-initdb-option-no-instructions">
<term><option>--no-instructions</option></term>
<listitem>