PostgreSQL 使用笔记一(安装篇)

查阅了大量资料,比如某度,某乎,一堆人都在吹捧PostgreSQL,似乎和PostgreSQL相恨见晚,马上要甩掉MySQL。

其实总结一下,大多数文章都在重提MySQL的痛点,让一些老用户回味起来踩坑的历史,让一下正在坑里的用户感到悲伤,好在我还比较理智。

理智的原因:MySQL被用了这么多年,还是一直有人在用,正说明了他还有优势,至少在大众层面PostgreSQL还没有MySQL那么普及。

至于在其他领域,无非是以下两点:

1. 收费问题

2. 需要一些MySQL无法提供的功能

说到MySQL,对于一个数据量不大的我来说,至少有一点我是非常喜欢的,那就是他的自增字段,就非常方便嘛。

书归正传,我今天是要写 PostgreSQL 的。

首先,PostgreSQL 优势,历史等等没准备去讲,因为网上一大堆,喜欢用那个,还是要看自己的喜好。那个,还有一个就是很多说PostgreSQL的全文检索,吐槽以下,我觉得一个数据库嘛,有这功能更好,取代elastic就没必要了吧,毕竟不是一个领域的,一个存储+使用,一个是专门做索引,人家elastic提供这么快的搜索方案,而且也是开源免费的,招谁惹谁了,还有人家本来也不单单能对接数据库呀,人家分析日志等海量数据多么给力,您能想想把日志数据丢到PostgreSQL里做全文检索么?

然后说说安装,我是从Windows下测试的。因为内网都是windows服务器,我也是醉了。

先到网站去下载,Windows版本有2种方式,一个是安装文件,一步一步执行,一种是解压就运行的,通常叫做绿色版,我个人比较钟情于绿色版。所以选择后者。

下载后,解压到D盘,路径d:\pgsql,很简短,我很喜欢。

翻了一下bin目录下文件,一眼看到 initdb,猜想可能是初始化数据库,信手就是一行命令

D:\pgsql>bin\initdb.exe
initdb: 错误: 没有指定数据目录
您必须确认此数据库系统的数据所在目录
存在. 使用 -D 选项或者
环境变量 PGDATA.

提示我没有用-D选项置顶数据目录,好,再来一个:

D:\pgsql>bin\initdb.exe -D d:\pgsql\data
属于此数据库系统的文件宿主为用户 "fanshengshuai".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese (Simplified)_China.936"进行初始化.
本地化隐含的编码 "GBK" 不允许作为服务器端的编码.
默认的数据库编码将采用 "UTF8" 作为代替.
initdb: 无法为本地化语言环境"Chinese (Simplified)_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

创建目录 d:/pgsql/data ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......windows
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 pg_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.

成功。您现在可以用下面的命令开启数据库服务器:

    ^"bin^\pg^_ctl^" -D ^"d^:^\pgsql^\data^" -l 日志文件 start

提示我成功了,并且给了我一句开启服务器的命令,这个不得不说,很人性化,上面的日志也很全。看到上面的GBK和UTF8的一堆,不知所云,看起来是GBK被替换成UTF8编码做存储了。所以到了这里才想到到去翻翻文档。百度了一下:PostgreSQL: Documentation: 14: initdbhttps://www.postgresql.org/docs/current/app-initdb.html不得不吐槽,官方英文的,虽然我英文水平还可以,但也不愿看不是母语的文字,综合了国内几个人文章,这里就不提出处了,因为一搜一把,都是一样的,不知道最初出自哪里的,得出以下常用参数,并拼出了一个比较全的命令语句。

-D directory/--pgdata=directory此选项指定应该存储数据库集群的目录。必传。也可以设置环境变量PGDATA来替换-D选项。

-U username/--username=username选择数据库superuser的用户名。这默认为运行initdb的用户的名称。

-E encoding/--encoding=encoding选择模板数据库的编码。这也是您稍后创建的任何数据库的默认编码,

--lc-collate/--lc-ctype更改默认的排序顺序或字符集类。

-k/--data-checksums在数据页上使用校验和来帮助检测I/O系统的损坏,否则系统将是静默的。启用校验和可能会导致显著的性能损失。如果设置,则计算所有数据库中所有对象的校验和。所有校验和失败将在pg_stat_database视图中报告。

 命令如下

bin\initdb.exe -D d:\pgsql\data --encoding=UTF8 --lc-collate=C --lc-ctype=en_US.utf8  --data-checksums --username=root

这里指定了数据存放目录,并指定了编码,同事指定了用户名为 root,个人比较喜欢 root,执行效果如下(先删除d:\pgsql\data): 

D:\pgsql>bin\initdb.exe -D d:\pgsql\data --encoding=UTF8 --lc-collate=C --lc-ctype=en_US.utf8  --data-checksums --username=root
属于此数据库系统的文件宿主为用户 "fanshengshuai".
此用户也必须为服务器进程的宿主.
数据库簇将带有一下 locales 初始化
  COLLATE:  C
  CTYPE:    en_US.utf8
  MESSAGES: Chinese (Simplified)_China.936
  MONETARY: Chinese (Simplified)_China.936
  NUMERIC:  Chinese (Simplified)_China.936
  TIME:     Chinese (Simplified)_China.936
缺省的文本搜索配置将会被设置到"english"

允许生成数据页校验和.

创建目录 d:/pgsql/data ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......windows
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
你可以通过编辑 pg_hba.conf 更改或你下次
执行 initdb 时使用 -A或者--auth-local和--auth-host选项.

成功。您现在可以用下面的命令开启数据库服务器:

    ^"bin^\pg^_ctl^" -D ^"d^:^\pgsql^\data^" -l 日志文件 start

赶紧执行以下启动命令:

D:\pgsql>^"bin^\pg^_ctl^" -D ^"d^:^\pgsql^\data^" -l 日志文件 start
等待服务器进程启动 .... 完成
服务器进程已经启动

提示服务器进程启动了。^_^,一路没有波澜。

赶紧拿出我们的数据管理工具连一连:

完美。

停止的话,就是上面的 start 改成 stop,这是常识了:

^"bin^\pg^_ctl^" -D ^"d^:^\pgsql^\data^" -l 日志文件 stop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值