postgresql使用文档之一 初始化数据存储区
17.2. 创建一个数据库集群(Database Cluster)
在你能做任何事情之前,你必须在磁盘上初始化一块存储空间。我们称这为一个数据库集群(database cluster). 一个Database cluster是一批被一个运行着数据库服务的示例所管理的数据库.初始化以后,一个database cluster将会包含一个名为 postgres的数据库,它是一个被一些工具、用户和第三方应用使用的默认数据库。数据库服务器本身不需要 postgres ,但是很多外部的程序会假设它存在。另外一个在每一个cluster初始化时创建的数据库叫做 template1. 就像它的名字所暗示,它会被用来作为一个创建后续数据库所使用的模板;它不应该被实际工作所使用(参考21章获取关于在一个集群中创建新的数据库的信息)
在文件系统术语中,一个database cluster是单个的目录,所有的数据会被存储在这个目录下。我们称这个目录为数据目录(data directory)或数据区域(data area).选择在哪个目录下存储您的数据完全取决于您,没有默认目录,尽管诸如/usr/local/pgsql/data或/var/lib/pgsql/data之类的目录作为数据目录是比较流行的。初始化一个database cluster,使用initdb命令,它是和PostgreSQL一起安装的。您期望的的database cluster文件系统目录使用选项 -D标注,如例:
$initdb -D /usr/local/pgsql/data
注意在您登录PostgreSQL用户账户之前必须先执行这个命令,这在上一节已经描述过了。(提示:您可以设置环境变量PGDATA来替换-D选项)
可供选择的,您也可以通过pg_ctl程序像下面这样运行 initdb
$pg_ctl -D /usr/local/pgsql/data initdb
如果您使用pg_ctl启动和停止服务器(查看17.3节)将会更加直观。这样的话在管理数据库服务器示例时pg_ctl将会是唯一的一个命令。
initdb将会尝试创建你指定的一个不存在的目录。很有可能您没有权限创建(如果您尊随我们的建议并创建了一个非特权账户)。在这种情况下,您应该创建这个目录(比如用root权限),然后改变这个目录的拥有者(owner)为PostgreSQL用户。以下示范应该如何做:
root# mkdir /usr/local/pgsql/data
root# chown postgres /usr/local/pgsql/data
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data
如果数据目录已经存在且初始化了的话,initdb将不会运行。
由于数据目录包含了所有存储在数据库里的数据,因此应该有对未授权的访问的安全机制。initdb收回了所有其他用户的访问权限,除了PostgreSQL用户.
然而,尽管这个目录下的内容是安全的,默认的客户授权设置允许任何本地用户连接数据库甚至成为数据库超级用户(管理员)。如果您不信任本地的其他用户,我们建议您使用任意一种initdb的选项-W,--pwprompt或--pwfile来分配给数据库超级用户的密码。并且,指定-A md5或-A password,这样默认的 trust 授权模式不起作用;或者在运行initdb后,第一次启动您的数据库服务器之前修改生成的pg_hda.conf文件。(其他的合理的途径包括使用peer授权或文件系统权限来限制链接。查看19章获取更多信息)
initdb同时为database cluster初始化默认的locale,一般而言,它只是使用本地locale设置并将其应用到初始化的数据库中。为数据库指定一个其他的locale是可能的;更多的信息可以在22.1节找到。默认的应用在特定的database cluster上的排序(sort order)是被initdb设置的,并且如果您创建了使用不同的排序的新的数据库,除非您删除重建它,在template数据库中使用的order是不会改变的。使用其他的locale而不是使用C或POSIX会对性能产生影响。因此在第一次正确的选择选项是很重要的。
initdb同时为database cluster设置默认的字符集和encoding。一般而言应该选择匹配locale设置。更多细节查看22.3节
17.2.1 网络文件系统
很多安装在网络文件系统创建database cluster。有些直接用NFS,或者使用内部使用NFS的NAS来完成。PostgreSQL并非特定于NFS文件系统,意味着它使用NFS的方式和本地连接的驱动(DAS,直接连接的存储器)完全一致。如果客户端和服务端的NFS实现未遵循标准的语意(semantics),这可能会产生可靠性问题(查看http://www.time-travellers.org/shane/papers/NFS_considered_harmful.html).具体而言,延时(异步)写入NFS服务器会产生可靠性问题;如果可以,尽量同步挂载(不用缓存)
postgresql使用文档之一 初始化数据存储区的更多相关文章
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- MongoDB学习(查找文档和其他数据查找操作)
理解Cursor对象和查询运算符 cursor对象 cursor对象相当于一个指针,可通过迭代它来访问MongdoDB数据库中的一组对象. 在使用 find() 方法查询时,返回的并非实际文档,而是一 ...
- Oracle 11g 单实例到单实例OGG同步实施文档-RMAN 初始化
Oracle 11g 单实例到单实例OGG同步实施文档-RMAN 初始化 2018-06-07 13:455170原创GoldenGate 作者: leo 本文链接:https://www.cndba ...
- Oracle 11g 单实例到单实例OGG同步实施文档-EXPDP初始化
Oracle 11g 单实例到单实例OGG同步实施文档-EXPDP初始化 2018-06-07 00:446470原创GoldenGate 作者: leo 本文链接:https://www.cndba ...
- postgresql pgsql最新版安装指南及数据存储路径更改及主从配置
postgresql pgsql最新版安装指南及数据存储路径更改及主从配置 安装指南 首先在apt的list添加你当前系统版本对应的apt列表 目前官网有16.04,14.04,12.04 分别对应下 ...
- 从多个XML文档中读取数据用于显示webapi帮助文档
前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDo ...
- C#动态生成Word文档并填充数据
C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html 引用http://blog.csdn ...
- 51单片机RAM 数据存储区学习笔记
转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...
- MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系
MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录.但两者并不完全对等.表的结构是固定的,MongoDB集合并没有这个约束 ...
随机推荐
- PHP 解决时差8小时的问题
有时候用php echo date("Y-m-d H:i:s")的时候会发现自己的时间和系统时间有差别 这里问题一般就是因为你自己的时区和配置的时区出现了差别的原因: 解决办法有三 ...
- 在iframe中获取iframe外的对象
parent.document.getElementById("dom ID"); $($(parent.document.getElementById("video-i ...
- 十大算法---Adaboost
当我们有针对同一数据集有多个不同的分类器模型时,怎样组合它们使预测分类的结果更加准确, 针对这种情况,机器学习通常两种策略. 1 一种是bagging,一种是boosting bagging:随机对样 ...
- 【POJ3243】【拓展BSGS】Clever Y
Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...
- 『重构--改善既有代码的设计』读书笔记----Inline Class
如果某个类没有做太多的事情,你可以将这个类的所有特性搬移到另外一个类中,然后删除原类.可以看到,Inline Class正好和Extract Class相反,后者是将一个巨类分解成多个小类从而来分担责 ...
- centos安装nodejs和mongodb
安装nodejs: Run as root on RHEL, CentOS or Fedora, for Node.js v4 LTS Argon: curl --silent --location ...
- 一个小白对Arguments的理解
1.Arguments是一个类似数组的实参队列,译为:论据,论点,姑且译作参数(实参): 2.Arguments与形参保持不同的存储空间,只有当形参被赋值之后两者才会相等 3.传说在严格模式下函数内自 ...
- PHP时间戳和日期相互转换
在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明. 1.php中时间转换函数 strtotime ...
- JQuery select控件的相关操作
JQuery获取和设置Select选项方法汇总如下: 获取select 先看看下面代码: $("#select_id").change(function(){//code...}) ...
- CSS响应式web设计
参考 1. 响应式web设计之CSS3 Media Queries http://www.cnblogs.com/mofish/archive/2012/05/23/2515218.html 2. 用 ...