- 浏览: 231106 次
- 性别:
- 来自: 北京
最新评论
-
chenxliang:
2016年10月26、27日,上海浦东,Postgres中国用 ...
PostgreSQL的用户、角色和权限管理 -
gejiod:
最近出了SQL:2011標準,希望樓主也更新下
SQL2008标准 -
lincon77:
太长了,又是E文,要是有些例子可能好理解些
SQL2003标准 -
少主丶无翼:
很谢,找了很久
SQL2003标准 -
zeeeitch:
...
PostgreSQL启动过程中的那些事七:初始化共享内存和信号二十:shmem中初始化堆同步扫描、pg子进程相关结构
文章列表
看着下面这个图,
就想到了“孔雀开屏”。从
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
进程安装信号句柄
十三:为统计进程启动准备资源