Postgresql概述
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

PostgreSQL 开发者把它念作 post-gress-Q-L。
PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。
Postgresql特征
1.省钱,可以运行在Unix和Lunux操作系统上。
2.支持SQL。
3.有丰富的数据类型。许多数据类型是一些商业数据库都没有提供的。
4.面向对象,它包含了一些面向对象的技术,如继承和类。
5.支持大数据,它不同于一般的桌面数据库,能够支持几乎不受限制大小的数据库,而且性能稳定。
描述:这个特点也是绝大多数考虑使用PostgreSQL数据库的原因之一,当然这种场景应该是有要求的,比如一些并发不高,但涉及统计分析类业务的场景相对比较适合。
6.方便集成web,提供一些接口方便 PHP,Perl等语言操作数据库。
7.事务处理。相对一些其他免费数据库如MySQL,PostgreSQL提供了事务处理,可以满足一些商业领域的数据需要。描述:事务对数据库来真的是太重要了。
8.PostgreSQL运行速度明显低于MySQL。因为MySQL使用了线程,而PostgreSQL使用的是进程。在不同线程之间的环境转换和访问公用的存储区域显然要比在不同的进程之间要快得多。
9.PostgreSQL的Sql语法相对更加干净和干练。
Postgresql版本号
PostgreSQL 12系列,PostgreSQL 10系列,PostgreSQL 9系列,PostgreSQL 8系列Postgresql安装
Postgresql下载网址:
http://www.postgresql.org/ftp/source/
这里我们选择最新的稳定版版postgresql-9.4.4 的源码版
https://ftp.postgresql.org/pub/source/v9.4.4/postgresql-9.4.4.tar.bz2
下载后解压
tar jxvf postgresql-9.4.4.tar.bz2
因为postgresql不能用root 用户启动,需要为他重新新建一个用户
创建用户
useradd pg944
进入下载的目录
cd postgresql-9.4.4
编译,这里设置安装目录
./configure --prefix=/home/pg944/pgsql
完成后执行
gmake world2 gmake install-world
到此为止,postgreSQL数据库程序安装完毕;
现在初始化postgresql 用户的相关配置:
su - pg944
添加环境变量:
vi ~/.bash_profile
进行环境变量的配置:
export PGPORT=1999
export PGDATA=/home/pg944/pg_root
export LANG=en_US.utf8
export PGHOME=/home/pg944/pgsql
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgres
export PGHOST=$PGDATA
alias rm='rm -i'
alias ll='ls -lh'
export PGDATABASE=postgres
保存设置:
source ~/.bash_profile
初始化数据库:
initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
$PGDATA代表配入环境变量的值,-U后面的 postgres 代表初始化数据库的用户名为 postgres;
这里要输入密码,和输入确认密码,输错会让你重新初始化
测试下:
$ psql -V2 psql (PostgreSQL) 9.4.4
启动数据库:
./pg_ctl -D ../PGDATA start\stop\restart
-D 命令 是为了启动非默认的 存放数据文件和配置文件的目录(PGDATA)
存放数据文件和配置文件的目录,文档中叫做cluster's data directory,内核分析中译作数据集簇。数据集簇通常叫做PGDATA。每个数据库实例都会有一个PGDATA,每台机器上可以并存多个不同的实例。
[pguser@TR-OS-DB 9.4]$ pg_ctl /data/pgdata/9.4/ start\stop\restart
正常启动。
Postgresql常用命令
切换至postgresql数据库用户pguser 或 postgres(根据自己实际情况)
1. SELECT version();

2. 查看数据库大小:
SELECT pg_size_pretty(pg_database_size('tianrun')) As fulldbsize;

3. 查看所有的数据库的大小:
select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS size from pg_database;

4. 查看各数据库数据创建时间:
select datname,(pg_stat_file(format('%s/%s/PG_VERSION',
case
when spcname='pg_default' then 'base'
else 'pg_tblspc/'||t2.oid||'/PG_11_201804061/'
end,
t1.oid))).*
from pg_database t1,pg_tablespace t2 where t1.dattablespace=t2.oid;

5.按占空间大小,顺序查看所有表的大小
select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc;

6. 按占空间大小,顺序查看索引大小
select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc; 
Postgresql备份与恢复
1. 备份10.12.2.100PC机(服务器)上的数据库(仅备份数据库和对应的数据库里面各表的结构):
pg_dump -h 10.12.2.100 -U postgres -p 8101 -d tianrun -s -f /data/tianrun0115.backup
2. 备份10.12.2.100PC机(服务器)上的数据库:
nohup pg_dump -h 10.12.2.100 -U postgres -p 8101 -d tianrun -w -F c -b -v -f /data/tianrun0115.backup &
3.在备份好的数据库文件所在的PC机(服务器1)传输备份数据库至目标PC机(服务器2):
scp -r /opt/goldwind/pgdata/tianrun0114.backup goldwind@10.12.2.135:/data/
4.在目标PC机(服务器2)执行恢复数据库命令:(执行时,需要有一存在的命名为tianrun0115的空库)
nohup pg_restore -h 10.12.2.135 -p 8101 -U postgres -W -d tianrun -v "/data/tianrun0115.backup"
5. 查看日志是否正常输出:tail -f nohup.out
6.进入tianrun0115数据库:
[goldwind@TR-OS-DB ~]$ psql -h 10.12.2.135 -p 8101 -U postgres -W -d tianrun0115
7. 命令修改数据库名称:
UPDATE pg_database SET datname = 'newDBname' where datname = 'oldDBname';
8. 立即停止PostgreSQL数据库服务:
pg_ctl stop -m fast
9. 启动PostgreSQL数据库服务:
pg_ctl start -D /data/pgdata/9.4
参考
http://www.postgres.cn/v2/home

