PostgreSQL创建数据库集群

在做任何事之前,要在磁盘上初始化一个数据库存储区域,称这个是数据库集群。一个数据库集群是被运行数据库服务实例管理的一些数据库。在初始化完后,数据库集群包含一个叫做postgres的数据库,数据库服务本身不要求postgres数据库存在,但是很多外部工具要求它存在,另外的一个数据库叫做template1,这个用于后续数据库的创建,不用于实际的工作。为了初始化一个数据库集群,使用initdb命令。例如

initdb -D /usr/local/pgsql/data或

pg_ctl -D /usr/local/pgsql/data initdb

网络文件系统

很多的安装,将数据库集群安装在网络文件系统上,有些时候是直接通过NFS,或是使用nas设备。postgreSQL对nfs文件系统不做特别处理,就当他是本地的文件系统一样使用。如果客户端和服务端 nfs的实现由非标准的semantis,可能引发可靠性的问题。具体的,延迟写入NFS服务可能引起可靠性问题。如果可能,同步的方式挂载NFS来避免这个。软挂载也是不被推荐的。

启动数据库服务器

postgres -D /usr/local/pgsql/data启动数据库,这种方式会在前台运行,如果不指定D参数,那么会使用PGDATA变量指定的目录。最好是按下面的方式在后台运行这个服务

postgres -D /usr/local/pgsql/data >logfile 2>&1 &

pg_ctl start -l logfile这个也是能启动数据库在后台,同样D参数与上面的使用时一样的。

设置开机自启动数据库示例如下,在/etc/rc.local或/etc/rc.d/rc.local

su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'

当server运行的时候,在数据目录下面有一个postmaster.pid的文件,放置启动多个server实例及用来关闭server

管理内核资源

共享内存和信号量

Table 17-1. System V IPC Parameters

 Name                                Description                          Reasonable values

 SHMMAX                              Maximum size of shared               at least 1kB (more if running
                                     memory segment (bytes)               many copies of the server)

 SHMMIN                              Minimum size of shared               1
                                     memory segment (bytes)

 SHMALL                              Total amount of shared memory        if bytes, same as SHMMAX; if
                                     available (bytes or pages)           pages,
                                                                          ceil(SHMMAX/PAGE_SIZE)

 SHMSEG                              Maximum number of shared             only 1 segment is needed, but
                                     memory segments per process          the default is much higher

 SHMMNI                              Maximum number of shared             like SHMSEG plus room for
                                     memory segments system-wide          other applications

 SEMMNI                              Maximum number of                    at least
                                     semaphore identifiers (i.e., sets)    ceil((max_connections           +
                                                                          autovacuum_max_workers
                                                                          +  4)  /  16)

 SEMMNS                              Maximum number of                    ceil((max_connections           +
                                     semaphores system-wide               autovacuum_max_workers
                                                                          +  4)  /  16)   *  17 plus room
                                                                          for other applications

 SEMMSL                              Maximum number of                    at least 17
                                     semaphores per set

 SEMMAP                              Number of entries in                 see text
                                     semaphore map

                                                                                                        

SEMVMX                              Maximum value of semaphore           at least 1000 (The default is
                                                                          often 32767; do not change
                                                                          unless necessary)
关闭数据库服务

有几种不同的关闭数据库的方式

sigterm

这是个smart shutdown模式。在接受到sigterm后,服务器不允许新的连接,让已经存在的会话完成他们的工作,当所有的会话结束后才关闭。

sigint

这个是快速关闭模式,服务器不允许新的连接,结束所有已存在的连接。会丢弃当前的事务。

sigquit

这个是立即关闭模式,主postgres进程发送sigquit给所有的子进程并马上退出。这个会导致在下次启动时候的recovery。


kill -INT `head -l /usr/local/pgsql/data/postmaster.pid`






你可能感兴趣的:(PostgreSQL管理)