PostgreSQL on Azure.cn : 安装部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL on Azure.cn : 安装部署相关的知识,希望对你有一定的参考价值。
PostgreSQL 是一个对象-关系数据库(数据库管理系统),基于BSD许可证。因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发PostgreSQL。简单地说,即使拿它来改一改,然后再拿出去卖钱,也没有人会来管。因此颇多的国产数据库就是基于PostgreSQL开发的。
有一件很有意思的事,PostgreSQL并不是念“post-gre- sequel”,PostgreSQL的开发者把它念作“post-gress-Q-L”,通常会简读为 "postgres"。
PostgreSQL支持大部分SQL标准并且提供了许多现代特性,例如:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,PostgreSQL 可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。而且支持很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,因此很容易做读写分离、负载均衡、数据水平拆分。
正因为Postgres有很多好处,目前很多用户都想要在Azure上也使用PostgreSQL作为数据库服务。在Azure.com上,PostgreSQL已经作为Azure的PaaS服务提供预览了。
但是,在Azure.cn上,目前还没有提供PostgreSQL的PaaS服务。那用户要使用怎么办呢?目前建议用户在Azure上自行搭建。其实整个安装部署的过程并不复杂,大家可以参考以下步骤自行安装。
安装环境为CentOS7.3,这也是Azure.cn上目前使用较为普遍的Linux系统。
在正式开始安装前,首先要确保PostgreSQL所需要的依赖包都已经正确安装了,我们通过一条命令来安装所有的依赖包:
# yum install readline-devel gcc make zlib-devel openssl openssl-devel libxml2-devel pam-devel pam libxslt-devel tcl-devel python-devel -y
所有的软件包会自动下载并安装(记得要给虚机配置一个公网地址)。
等到所有软件安装完成,我们就可以下载最新的PostgreSQL的安装包了,在浏览器输入https://ftp.postgresql.org/pub/source/,可以看到最新版本是2017年8月31号发布的9.6.5
执行以下命令,下载最新的PostgreSQL安装包到指定目录
# wget https://ftp.postgresql.org/pub/source/v9.6.5/postgresql-9.6.5.tar.bz2 -P /root/
进入下载目录,用tar命令解压缩安装包
# tar jxvf postgresql-9.6.5.tar.bz2
这条命令将安装包解压到了postgresql-9.6.5,接下来我们就进入该目录,执行安装部署:
# cd postgresql-9.6.5
指定将PostgreSQL安装到opt目录下
# ./configure --prefix=/opt/postgresql-9.6.5
如果我们需要生成所有能生成的内容,包括文档(html 和手册页)和其他模块 (contrib),那么再执行以下命令,完成安装:
# gmake install-world
至此,PostgreSQL的软件包就已经安装完毕了,接下来我们需要初始化并配置数据库:
首先我们可以先创建一个链接,指向安装目录,这只是为了简化后面用到的命令,也可以跳过这一步,不过后继的命令要做相应的修改:
# ln -s /opt/postgresql-9.6.5 /opt/pgsql
安装好的PostgreSQL没有创建数据库,因此我们首先要创建数据库目录
# mkdir -p /opt/pgsql_data
但是直接在root下运行数据库是很危险的,所以我们要创建一个新用户,并修改该用户的配置文件。
# useradd postgres
# chown -R postgres.postgres /opt/pgsql_data
# su – postgres
编辑 bash_profile 文件。这些行将添加到 bash_profile 文件的末尾,
cat >> ~/.bash_profile <<EOF
export PGPORT=1999
export PGDATA=/opt/pgsql_data
export LANG=en_US.utf8
export PGHOME=/opt/pgsql
export PATH=\\$PATH:\\$PGHOME/bin
export MANPATH=\\$MANPATH:\\$PGHOME/share/man
export DATA=`date +"%Y%m%d%H%M"`
export PGUSER=postgres
alias rm=‘rm -i‘
alias ll=‘ls -lh‘
EOF
执行 bash_profile 文件,或者退出当前帐号,重新进入,确保参数生效。
$ source .bash_profile
到这里,数据库就配置完成了,我们可以通过以下两条命令来查看安装目录,参数是否正确
$ which psql
$ psql -V
当我们看到以上反馈时,说明安装基本没有问题了。
接下来我们初始化数据库:
$ initdb -D $PGDATA -E UTF8 --locale=C -U postgres -W
还需要配置数据库启动文件:
# cd /root/postgresql-9.6.5/contrib/start-scripts
# cp linux /etc/init.d/postgresql
修改 /etc/init.d/postgresql 文件中的两个变量。设置为 PostgreSQL 的安装路径:/opt/pgsql。PGDATA 设置为 PostgreSQL 的数据存储路径:/opt/pgsql_data
# sed -i ‘32s#usr/local#opt#‘ /etc/init.d/postgresql
# sed -i ‘35s#usr/local/pgsql/data#opt/pgsql_data#‘ /etc/init.d/postgresql
设置启动文件为可执行文件
# chmod +x /etc/init.d/postgresql
现在我们可以启动postgreSQL了
# /etc/init.d/postgresql start
检查 PostgreSQL 的终结点是否已打开,注意,此时PostgreSQL只允许本机连接数据库,因为我们还没有配置监听端口和信任端点:
# netstat -tunlp|grep 1999
安装部署至此全部完成,接下来让我们连接到数据库,并建立一个简单的数据库来验证一下:
切换成 postgres 用户
# su – postgres
创建数据库
$ createdb events
链接新创建的数据库
$ psql -d events
创建我们的第一张表
CREATE TABLE potluck (name VARCHAR(20), food VARCHAR(30), confirmed CHAR(1), signup_date DATE);
现在已经设置一个具有以下列名和限制的 4 列表:
“name”列受 VARCHAR 命令限制,必须少于 20 个字符。
“food”列指示每个人将携带的食物。VARCHAR 将此文本限制为 30 个字符以下。
“confirmed”列记录此人是否接受了聚餐邀请。可接受的值为“Y”和“N”。
“date”列将在他们报名参加该活动时显示。Postgres 要求日期格式为 yyyy-mm-dd。
查看创建的表
\\dt
插入一行数据
INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘John‘, ‘Noodle‘, ‘Y‘, ‘2017-09-21‘);
多添加几个
INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘Sandy‘, ‘Rice‘, ‘N‘, ‘2017-09-21‘);
INSERT INTO potluck (name, food, confirmed, signup_date) VALUES (‘Tom‘, ‘BBQ‘,‘Y‘, ‘2017-09-20‘);
INSERT INTO potluck (name, food, confirmed, signup_date) VALUES(‘Tina‘, ‘Salad‘, ‘Y‘, ‘2017-09-19‘);
在表中查询
select * from potluck;
更新数据
UPDATE potluck set confirmed = ‘Y‘ WHERE name = ‘Sandy‘;
UPDATE potluck set food = ‘Rice‘ WHERE name = ‘Sandy‘;
删除数据
delete from potluck where name = ’John’;
在下一篇,我们来看看怎么修改PostgreSQL的数据库参数,优化性能。
以上是关于PostgreSQL on Azure.cn : 安装部署的主要内容,如果未能解决你的问题,请参考以下文章
postgresql ON CONFLICT ON CONSTRAINT 用于 2 个约束
PostgreSQL:带有约束名称的“ON CONFLICT”