`
文章列表
  看着下面这个图, 就想到了“孔雀开屏”。从 main 开始经过细致、周密的准备, pg 启动了 postmaster 进程、系统日志进程、昙花一现的启动进程、后台写进程、写 WAL 日志进程、……,最后在服务器段抛出一句 ” data ...
         话说启动进程调用 StartupXLOG 启动 xlog ,根据情况,如果需要就排除系统故障引起的数据库不一致状态,做相应的 REDO 或 UNDO ,然后创建一个检查点,把所有共享内存磁盘缓冲和提交数据缓冲写并文件同步到磁盘、把检查点插入 xlog 文件、更新控制文件,使数据库达到一种状态 。 这节接着讨论启动进程在创建检查点时调用的 CheckPointGuts 方法(在创建重启点时也会调用这个方法)。 CheckPointGuts 方法功能是刷出所有共享内存中的数据到磁盘并做文件同步,共享内存中的数据包括 clog 、 ...
       话说 main()->PostmasterMain()->StartupDataBase() , fork 了启动进程,根据情况处理系统故障并启动了 xlog ,然后启动进程退出。 Postmaster 进程响应启动进程退出信号, fork 了后台写进程、 WAL 日志写进程、 AUTOVACUUM 进程、归档进程、统计进程这些辅助进程。然后, postmaster 进程进入了无限循环,等待客户端请求到来,为其提供服务;并根据需要检查系统日志集成、后台写进程、 WAL 日志写进程、 AUTOVACUUM 进程、归档进程和统 ...
1 若能远程操作,在服务器上设置ssh服务     a、修改sshd_config文件,命令为:vi /etc/ssh/sshd_config     b、将#PasswordAuthentication no的注释去掉,并且将NO修改为YES     c、将#PermitRootLogin yes的注释去掉     d、重新启动SSH服务,命令为:/etc/init.d/sshd restart     e、验证SSH服务状态,命令为:/etc/init.d/sshd status 2 看磁盘容量 df -h 3 查看系统版本 uname -a 4 查看磁盘驱动器 ...
PostgreSQL相关进程分类:     ------------ 转载请著明出处,来自博客: blog.csdn.net/beiigang beigang.iteye.com
         这节主要讨论启动进程到了 StartupXLOG 。根据情况,如果需要就排除系统故障引起的数据库不一致状态,做相应的 REDO 或 UNDO ,然后创建一个检查点,把所有共享内存磁盘缓冲和提交数据缓冲写并文件同步到磁盘、把检查点插入 xlog 文件、更新控制文件,使数据库达到一种状态,设置共享内存中 XLogCtl 、 ShmemVariableCache 等对象信息 ;如果不需要,就根据控制文件从 xlog 文件读取最后的检查点信息,设置共享内存中 XLogCtl 、 ShmemVariableCache 等对象信息;启动完 ...
Pg XLOG 文件(常说的 REDOLOG )名字的命名方法是在 XLogFileName 宏里定义的,分别由时间线 ID 、日志 ID 、段 ID 的八位 16 进制数依次构成。例如 00000001000000010000008F 。 #define XLogFileName (fname, tli, log, seg)    \ ...
  Pg 控制文件 pg_control 里存储的数据是一个 ControlFileData 结构。 控制文件尽量保持小于 512 个字节以使其适合一个典型的磁盘驱动的物理簇的大小。这会减少由于电源故障而写控制文件直接失败的可能性。但控制文件的物理大小是 8K ,这个远大于 512 个字节。这样做是为了控制文件格式变化时保持物理大小不变,如果正在读一个不兼容的文件,以使 ReadControlFile 能传递一个合适的错误版本控制文件信息而代替一个读错误。系统里定义了和自己匹配的控制文件版本变量 PG_CONTROL_VERSION ,启动时会做系统和控制文件 ...
话说 pg 中有个昙花一现的进程“启动进程”(“ startup progress ”),做了启动 XLOG 、验证数据库一致性、根据需要做数据库恢复和创建检查点等事情(参见《 pg 启动过程中的那些事十五 StartDataBase 梗概》),现在来讨论这个进程。 1   StartupDataBase 调用流程略图   话说 Main()->PostmasterMain()->StartupDatabase() ,启动数据库, StartupDatabase 方法其实就 ...
       这一节到了 pg 的高潮, StartupDataBase 启动数据库。        经过细致甚至有些枯燥(这中间我中断了几次就是有这感觉,干这行吗,还是搞清楚了心里踏实。)的准备,激动人心的时刻到了, pg 要开始“ high ”了, pg 人的原话就是“ We're ready to rock and roll... ”。        一个 StartupDataBase 方法涉及到的方法数十乃至上百,涉及到的代码有数万行,甚至可以到十万行这个数量级,搞到 word 文档里有几百页,把这些存在复杂逻 ...
       这一节 pg 启动系统日志进程 。 1 先上个图,看一下函数调用过程梗概,中间略过部分细节 SysLogger 启动方法调用流程图   2 初始化 syslogger 进程 话说 main()-> … ->PostmasterMain()-> … ->SysLogger_Start() ,调用 logfile_getname 获取系统日志文件名,调用 logfile_open
    现在离数据库启动过程的高潮只有几步之遥,这几步比较简单,简要描述之。     这几步包括:          八:设置虚拟文件描述符        九:初始化活跃 backend 进程列表        十:创建 opts 文件        十一:保存非默认 GUC 参数到文件        十二:为 postmaster 进程安装信号句柄        十三:为统计进程启动准备资源
现在离数据库启动过程的高潮只有几步之遥,这几步比较简单,简要描述之。       这几步包括:        八:设置虚拟文件描述符        九:初始化活跃 backend 进程列表        十:创建 opts 文件        十一:保存非默认 GUC 参数到文件        十二:为 postmaster 进程安装信号句柄        十三:为统计进程启动准备资源       
      现在离数据库启动过程的高潮只有几步之遥,这几步比较简单,简要描述之。     这几步包括:        八:设置虚拟文件描述符        九:初始化活跃 backend 进程列表        十:创建 opts 文件        十一:保存非默认 GUC 参数到文件        十二:为 postmaster 进程安装信号句柄        十三:为统计进程启动准备资源        十四:为 autovuc 进程启动做条件检查 ...
    现在离数据库启动过程的高潮startdatabase只有几步之遥,这几步比较简单,简要描述之。     这几步包括:        八:设置虚拟文件描述符        九:初始化活跃 backend 进程列表        十:创建 opts 文件        十一:保存非默认 GUC 参数到文件        十二:为 postmaster 进程安装信号句柄        十三:为统计进程启动准备资源
Global site tag (gtag.js) - Google Analytics