PostgreSQL 9.3 initdb add -S only do fsync used with pg_upgrade when server set fsync from off to on

Add initdb --sync-only option to sync the data directory to durable
storage.
Have pg_upgrade use it, and enable server options fsync=off and
full_page_writes=off.
Document that users turning fsync from off to on should run initdb
--sync-only.

initdb -S选项目前仅仅被pg_upgrade用于fsync数据库集群目录, 因为pg_upgrade使用了fsync=off来加速升级过程.

然后在数据库集群起来之前会修改为fsync=on, 这个过程之间必须要将kernel或文件系统cache中的脏块写入持久化存储中.

所以就有了initdb -S这个选项, 用来做fsync的事情.

initdb src:

+   /* If we only need to fsync, just to it and exit */
+   if (sync_only)
+   {
+       setup_pgdata();
+       perform_fsync();
+       return 0;
+   }

contrib/pg_upgrade/server.c

+    * Turn off durability requirements to improve object creation speed, and
+    * we only modify the new cluster, so only use it there.  If there is a
+    * crash, the new cluster has to be recreated anyway.  fsync=off is a big
+    * win on ext4.

+            (cluster == &new_cluster) ?
+               " -c synchronous_commit=off -c fsync=off -c full_page_writes=off" : "",

contrib/pg_upgrade/pg_upgrade.c

+   prep_status("Sync data directory to disk");
+   exec_prog(UTILITY_LOG_FILE, NULL, true,
+             "\"%s/initdb\" --sync-only \"%s\"", new_cluster.bindir,
+             new_cluster.pgdata);
+   check_ok();

doc/src/sgml/config.sgml

+        For reliable recovery when changing <varname>fsync</varname>
+        off to on, it is necessary to force all modified buffers in the
+        kernel to durable storage.  This can be done while the cluster
+        is shutdown or while fsync is on by running <command>initdb
+        --sync-only</command>, running <command>sync</>, unmounting the
+        file system, or rebooting the server.

doc/src/sgml/ref/initdb.sgml

+        Safely write all database files to disk and exit.  This does not
+        perform any of the normal <application>initdb</> operations.

[参考]
1. http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=630cd14426dc1daf85163ad417f3a224eb4ac7b0

2. man initdb

       -S, --sync-only
           Safely write all database files to disk and exit. This does not perform any of the normal initdb
           operations.
时间: 2024-10-31 18:17:55

PostgreSQL 9.3 initdb add -S only do fsync used with pg_upgrade when server set fsync from off to on的相关文章

PostgreSQL服务器管理:服务器配置

本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 设置参数 1.1. 参数名称和值 所有参数名都是大小写不敏感的.每个参数都可以接受五种类型之一的值: 布尔.字符串.整数. 浮点数或枚举.该类型决定了设置该参数的语法: 布尔: 值可以被写成 on, off, true, false, yes, no, 1, 0 (都是大小写不敏感的)或者这些值的任何无歧义前缀. 字符串: 通常值被包括在单引号内,值内部的任何单引号都需要被双写.不过,如果值是一个简单数字或者 标

Postgresql转存恢复数据经验谈

我们知道恢复数据是dba工作的一部分,做这部分工作一般都是输入恢复命令后就在那里无聊的等着任务的完,特别是大容量的数据恢复起来真的等到晕,那么我们如何提高数据恢复的性能呢,下面说说那些参数有影响 我们知道,导入数据的过程其实就是io的负载,特别考验硬盘的写能力,还有就是数据写入磁盘的方法,另外一个就是cpu的处理能力,再一个就是内存的大量使用,影响的参数大概有这些 shared_buffers work_mem maintenance_work_mem checkpoint_segments a

PostgreSQL安装、配置及简单使用方法_PostgreSQL

一.PostgreSQL简介 1.什么是PostgreSQL PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON何JSONB类型,数组类型)和自定义类型.而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数.触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python.PL/Tcl,等等. 2.PostgreSQL数

Install SysBench support MySQL and PostgreSQL

[测试环境] CentOS 5.7 x64 [安装MySQL] 1. 下载Mysql Red Hat & Oracle Linux 5 (x86, 64-bit), RPM Package MySQL Server 5.6.11 84.2M Download (MySQL-server-5.6.11-2.rhel5.x86_64.rpm) MD5: 944e3e425becf3ef7ad5f191e0e1f04f 2. 安装Mysql rpm -ivh MySQL-server-5.6.11-2

PostgreSQL 9.6 平滑fsync, write原理浅析

PostgreSQL 9.6 平滑fsync, write原理浅析 作者 digoal 日期 2016-10-06 标签 PostgreSQL , 9.6 , 平滑 fsync , write , smooth fsync 背景 汽车换挡是否平顺,通常取决于档位数,或者换挡技术. 档位数越多,换挡时感觉会约平顺,档位数较少的情况下,换挡可能会有比较明显的顿挫感觉. 数据库也一样,有些时候可能就会出现卡顿的现象,比如尖锐(堆积)的IO需求时. 本文将给大家介绍9.6在fsync, write方面的

PostgreSQL 9.6 IO Hang问题浅析与优化

背景 PostgreSQL检查点是将shared buffer中的脏页打标记,并集中将其刷到磁盘的动作(fsync).(期间可能有刷盘的调度,降低当脏页很多时带来的IO影响) 在检查点之外,平时bgwriter进程则会使用bufferio的方式(write)将脏页写到OS的dirty page. 如果shared buffer非常大,而且数据库应用如果是频繁产生脏页的应用,那么检查点带来的性能影响会非常的明显. 例如shared buffer有100G,活跃数据有100G,同时活跃数据在不停的被

人分九等,数有阶梯 - PostgreSQL 阶品(颗粒)分析函数width_bucket, kmean应用

标签 PostgreSQL , width_bucket , 数据分布 , 包裹筛选 , 颗粒度筛选 , Oracle , 阶级分布 , kmean 背景 从古至今,现实社会中,到处充满了等级划分,例如东汉史学家.文学家班固<汉书><古今人表>把人分九等.九品量表"之中,分为上(上智).中(中人).下(下愚)三等.在每个等级中又分为:上上.上中.上下,中上.中中.中下,以及下上.下中和下下三等. 现代的一些见解: 第一等:圣人.已参破红尘却仍然悲天悯人,已近神界却不孤芳自

PostgreSQL 9.6 检查点柔性优化(SYNC_FILE_RANGE) - 在单机多实例下的IO Hang问题浅析与优化

背景 PostgreSQL检查点是将shared buffer中的脏页打标记,并集中将其刷到磁盘的动作(fsync).(期间可能有刷盘的调度,降低当脏页很多时带来的IO影响) 在检查点之外,平时bgwriter进程则会使用bufferio的方式(write)将脏页写到OS的dirty page. 如果shared buffer非常大,而且数据库应用如果是频繁产生脏页的应用,那么检查点带来的性能影响会非常的明显. 例如shared buffer有100G,活跃数据有100G,同时活跃数据在不停的被

PostgreSQL 9.6 平滑fsync, write深入分析

背景 汽车换挡是否平顺,通常取决于档位数,或者换挡技术. 档位数越多,换挡时感觉会约平顺,档位数较少的情况下,换挡可能会有比较明显的顿挫感觉. 数据库也一样,有些时候可能就会出现卡顿的现象,比如尖锐(堆积)的IO需求时. 本文将给大家介绍9.6在fsync, write方面的平顺性改进,减少尖锐的IO需求. 数据库为了保证数据可靠性,同时还要保证好的读写性能,以及读写的一致性,经过多年的发展,REDO日志,shared buffer基本已经成为数据库的标配. 为了保证数据的可靠性,通常需要在将d