欢迎,来自IP地址为:44.200.122.214 的朋友
PostgreSQL也被称作Postgres,是一款强大的开源关系型数据库系统。系统面向企业级的设计理念,令其具有诸多特性,例如错误日志预写入、异步复制、多版本并发控制(MVCC)、在线热备份、时间点恢复、查询计划/优化、表空间、嵌套事务处理等。有如此多的特性,令PostgreSQL在开源数据库系统领域可以和MySQL展开竞争,并在某些特定应用领域逐渐取代MySQL成为主流。
Postgres于2017年10月5日发布其最新版PostgreSQL 10,新版本PostgreSQL有如下特性:
- 逻辑复制:此功能允许在备用服务器上复制单个数据库对象(无论是行、表还是选择性数据库)。它提供了对数据复制的更多控制
- 同步复制的仲裁提交:在这个特性中,DBA现在可以指定确认数据库更改所需的备用号码,这样数据可以被认为是安全写入的
- SCRAM-SHA-256认证:对现有的基于MD5的密码认证进行安全性的改善
- 改进的并行查询执行
- 声明表分区
- JSON和JSONB全文搜索支持
本文将详细介绍如何在Linux系统中使用源代码安装PostgreSQL 10,为各位Linux用户提供参考。
源代码安装PostgreSQL
由于Postgres是开源数据库,它可以根据每个用户的需求自行编译源代码,可以在编译时使用一个或多个命令行选项来达到特定功能个性编译及安装的目的。
使用源代码安装软件最主要的优势就在于其满足不同需求的个性化。
1、首先使用包管理工具安装一些必要的编译工具,如gcc,、readline-devel以及zlib-devel等
# yum install gcc zlib-devel readline-devel [On RHEL/CentOS] # apt install gcc zlib1g-dev libreadline6-dev [On Debian/Ubuntu]
2、使用wget命令从PostgreSQL的官方网站下载源代码压缩包
# wget https://ftp.postgresql.org/pub/source/v10.0/postgresql-10.0.tar.gz
3、使用tar命令解压缩源代码包
# tar -zxvf postgresql-10.0.tar.gz # ll
典型输出如下:
total 25236 drwxrwxrwx 6 1107 1107 4096 Oct 2 21:15 postgresql-10.0 -rw-r--r-- 1 root root 25830653 Oct 2 21:15 postgresql-10.0.tar.gz
4、下一步就是根据自己的需求来设定源代码编译选项
# # cd postgresql-10.0
使用./configure – -help命令来查看不同选项的帮助信息,示例输出如下:
`configure' configures PostgreSQL 10.0 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local/pgsql] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] ......
5、现在新建一个存储PostgreSQL程序文件的目录,并在configure命令中使用prefix选项
# mkdir /opt/PostgreSQL-10/ # ./configure --prefix=/opt/PostgreSQL-10
示例输出如下:
checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking which template to use... linux checking whether NLS is wanted... no checking for default port number... 5432 checking for block size... 8kB checking for segment size... 1GB checking for WAL block size... 8kB checking for WAL segment size... 16MB checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc supports -Wdeclaration-after-statement... yes checking whether gcc supports -Wendif-labels... yes checking whether gcc supports -Wmissing-format-attribute... yes checking whether gcc supports -Wformat-security... yes checking whether gcc supports -fno-strict-aliasing... yes checking whether gcc supports -fwrapv... yes checking whether gcc supports -fexcess-precision=standard... no ....
6、编译完成后,就可以用make命令来生成PostgreSQL
# make
生成完成后,使用以下命令来进行PostgreSQL的安装
# make install
全部执行完成后,Postgresql 10 就会被安装在 /opt/PostgreSQL-10目录。
7、现在需要添加一个postgres用户并创建一个存放数据文件的目录,这个目录的所有者应该为数据库用户postgres,并且将该目录的权限设置为700以保证数据文件的安全性。最后,需要将PostgreSQL的执行文件添加至系统的PATH环境变量中
# useradd postgres # passwd postgres # mkdir /pgdatabase/data # chown -R postgres. /pgdatabase/data # echo 'export PATH=$PATH:/opt/PostgreSQL-10/bin' > /etc/profile.d/postgres.sh
8、然后就可以切换至postgres用户来对数据库进行初始化操作了
# su postgres $ initdb -D /pgdatabase/data/ -U postgres -W
其中-D参数用于指定数据文件位置;-U参数用于指定操作数据库的超级用户;-W参数为需要设置超级用户密码。如果想要了解更多initdb工具的详细信息,可以使用initdb –help命令来获得更多帮助信息。
9、数据库初始化完成后,可以通过修改数据文件目录的postgresql.conf配置文件来达到设置postgresql侦听端口的目的
修改完配置文件后,需要用以下命令重新启动PostgreSQL
$ pg_ctl -D /pgdatabase/data/ -l /pglog/db_logs/start.log start
其中-l /pglog/db_logs/start.log参数是用于设置日志文件,方便查看信息,可以根据自己的实际情况自行设置,如不需要也可以去掉这部分内容,并不影响数据库服务器启动。
10、数据库服务启动后,可以用以下命令查看进程信息以及端口信息来进行确认
$ ps -ef |grep -i postgres $ netstat -apn |grep -i 5432
当看到以上内容时,说明数据库系统已经运行正常。
11、现在,就可以使用如下命令连接数据库,执行SQL语句了
$ psql -p 5432 postgres=# create database test; postgres=# \l 用于显示所有数据库 postgres=# \q 退出psotgre命令提示符
结果示例如下: