简介
PostgreSQL 是一个功能强大、特性丰富、结构复杂的开源关系型数据库,它的起源可以追溯到1986年,当时它是加州大学伯克利分校 POSTGRES 项目的一部分。
安装
macOS安装
使用 HomeBrew 安装
默认的版本可能会比较低,可以下载安装包进行安装,参考第二种方式。
1
2
3
4
5
6
7brew search postgresql
==> Formulae
postgresql postgresql@10 postgresql@9.4 postgresql@9.5 postgresql@9.6
==> Casks
navicat-for-postgresql navicat-for-postgresql
brew install postgresql@10下载 Postgres.app 再安装
Windows安装
进入 下载地址,选择相应的版本下载安装即可。
CentOS安装
通过 yum 进行安装
详细可参考 Linux下的安装
1
2
3
4
5
6yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql11
yum install postgresql11-server # 可选
/usr/pgsql-11/bin/postgresql-11-setup initdb # 初始化,可选
systemctl enable postgresql-11 # 允许自启动,可选
systemctl start postgresql-11 # 启动下载 rpm 包安装
1
2
3
4
5
6
7
8
9安装相应PG版本
rpm -ivh pgdg-centos-XXX.rpm
更新库
yum update
安装相应的版本,包括常用的pgadmin工具
yum --enablerepo=pgdgXX install postgresqlXX-server pgadmin3_XX postgresqlXX-contrib
配置PATH环境变量,并使之生效
cat /etc/profile
source /etc/profile
源码安装
直接从官网 PostgreSQL 下载相应版本的源码包。
1 | 新建PG专用的用户 |
添加用户和数据库
初次安装后,默认生成一个名为 postgres 的数据库和一个名为 postgres 的数据库用户,同时还生成了一个名为 postgres 的 Linux 系统用户。
使用PostgreSQL控制台新增用户
1 | sudo adduser newdbuser # 新建一个Linux新用户 |
使用shell命令行新增用户
1 | sudo -u postgres createuser --superuser newdbuser # 创建数据库用户 newdbuser,并指定其为超级用户 |
控制台常见命令
1 | \h:查看SQL命令的解释,比如\h select。 |
基本数据库操作
1 | # 创建新表 |
日志查看
PostgreSQL 日志分为三类,分别是 pg_log
、pg_xlog
和 pg_clog
,一般保存在 $PGDATA
对应的目录下。
pg_log
—— 数据库运行日志,默认开启,可以通过配置$PGDATA/postgresql.conf
。这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。linux自带的路径一般在 /var/log/postgres 下面。该日志有.csv格式和.log。个人建议用前一种,因为一般会按大小和时间自动切割,毕竟查看一个巨大的日志文件比查看不同时间段的多个日志要难得多。另外这种日志是可以被清理删除,压缩打包或者转移,同时并不影响DB的正常运行。当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。
pg_xlog
—— WAL日志,强制开启。记录的 PostgreSQL 的 WAL 信息,也就是一些事务日志信息(transaction log),默认单个大小是16M,源码安装的时候可以更改其大小。这些信息通常名字是类似’000000010000000000000013’这样的文件,这些日志会在定时回滚恢复(PITR),流复制(Replication Stream)以及归档时能被用到,这些日志是非常重要的,记录着数据库发生的各种事务信息,不得随意删除或者移动这类日志文件,不然你的数据库会有无法恢复的风险
当你的归档或者流复制发生异常的时候,事务日志会不断地生成,有可能会造成你的磁盘空间被塞满,最终导致DB挂掉或者起不来。遇到这种情况不用慌,可以先关闭归档或者流复制功能,备份 pg_xlog 日志到其他地方,但请不要删除。然后删除较早时间的的 pg_xlog,有一定空间后再试着启动 Postgres。
pg_clog
—— 事务提交日志,记录事务的元数据,强制开启。pg_clog 这个文件也是事务日志文件,但与 pg_xlog 不同的是它记录的是事务的元数据(metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。
配置文件
*pg_hba.conf *—— 客户端访问和认证受到标准的 PostgreSQL 的基于主机的认证文件的控制。其中的认证文件即 是 pg_hba.conf。一般格式是一组记录,每行一个。一个记录由多个被空格或者制表符分隔的域组成。如果域值被加上引号,域可以包含空格。记录不能跨越多行。配置的具体含义可以参考 pg_hba.conf文件说明与配置。
postgresql.conf —— 配置文件主要影响这服务器实例的基本行为,比如允许的连接数,操作允许占用的最大内存数,指定哪些用户可以用何种方式连接到数据库等等。当然这一切在数据库安装好时都有一个默认值,但是如果你需要对你的数据库进行定制的话,可以对这些数值进行符合需求的修改。配置的具体含义可以参考 PostgreSQL 配置文件postgresql.conf。
防火墙、SELinux 设置
PostgreSQL 默认使用 5432
端口,也可以在 postgresql.conf
文件中设置,可以使用如下命令开启防火墙端口。
1 | 暂时有效 |
如果开启了 SELinux 服务,可能会在使用中遇到各种各样的权限问题。
1 | 修改数据库的存放位置,必须添加一些新上下文来匹配新位置 |
其他
PostgreSQL 诞生于学院派,没有局限于当时的一些硬件条件,MySQL 发展自程序员的业余作品,为当时的小内存小外存的硬件条件做了特殊的处理,随着硬件的不断发展,这些处理在现在看来倒成了一个缺点。
MariaDB 由 MySQL 的创始人 Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司 MySQL AB 卖给了SUN,此后,随着SUN被甲骨文收购,MySQL 的所有权也落入 Oracle 的手中。MariaDB 名称来自 Michael Widenius 的女儿 Maria 的名字。MariaDB 发展势头也很不错,对应版本和 MySQL 也基本兼容。