【centos】配置postgresql数据库。

参考资料

linux下postgresql的源,可在此找到各种软件源

PostgreSql 学习笔记一 CentOS下安装使用 及常用命令

Centos7安装PostgreSQL9.5

安装

下面是转载

1、配置YUM库

vi /etc/yum.repos.d/CentOS-Base.repo


在[base] 和[updates] 区段添加:

exclude=postgresql*

配置完yum库之后卸载之前安装的Postgresql:

yum erase postgresql*


为了避免有遗留,可以多删除几遍,直到有如下提示:

已加载插件:fastestmirror, langpacks
参数 postgresql 没有匹配
不删除任何软件包
删除所有数据:

rm -rf /var/lib/pgsql

打开网页,查找合适的源

注意,我用的是

这里写图片描述

url为:

https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

安装PGDG RPM文件

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

安装contrib第三方包和分布式包,可以选择不安装:

yum -y install postgresql96-server postgresql96-contrib

安装如下:

这里写图片描述

这里写图片描述

完成

注意,当前默认安装路径是

/usr/pgsql-9.6/

初始化数据库
/usr/pgsql-9.6/bin/postgresql96-setup initdb

这里写图片描述

Postgresql服务控制:

service postgresql-9.6 start/stop/restart/reload

开机自启动

sudo chkconfig postgresql-9.6 on

配置pg_hba.conf文件:

注意,文件在

/var/lib/pgsql/9.6/data/pg_hba.conf
sudo vi /var/lib/pgsql/9.6/data/pg_hba.conf

以下转载

靠近最下方的

 	 	 	 	 
host	all	all	127.0.0.1/32	ident
host	all	all	::1/128	ident
把ident 改为 md5

 	 	 	 	 
host	all	all	127.0.0.1/32	md5
host	all	all	::1/128	md5

接下来可以使用postgre sql了。

postgresql9.6的相关服务命令

-- 启动
sudo systemctl start postgresql-9.6
-- 停止
sudo systemctl stop postgresql-9.6
-- 重启
sudo systemctl restart postgresql-9.6



请重启postgresql

使用

初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。这里需要注意的是,同时还生成了一个名为postgres的操作系统用户。可以使用postgres登陆试下:

1、
sudo -i -u postgres
2、
psql
退出时使用命令:

postgres=# \q
上面只是第一步退出,
会进入到:
-base-版.本$
你需要输入exit命令才退到最外面。


这里写图片描述

给postgresq账号添加密码

1、
sudo su - postgres
2、
psql
3、
\password postgres 给postgress设置密码

然后你会看到这些只要输入及确认密码即可。
这里写图片描述

一些命令

添加用户

1.创建操作系统用户

先到操作系统
sudo adduser dbuser   
sudo su - postgres
psql
\password postgres 给postgress设置密码
2.创建数据库用户

CREATE USER dbuser WITH PASSWORD 'password';
3.创建数据库,与用户关联

CREATE DATABASE exampledb OWNER dbuser;
4.设置所有权

GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;
登陆:

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。
输入上面命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。
查看登陆的信息

postgres=# \conninfo
默认端口号是5432,程序位置/var/run/postgresql

一些命令

创建用户
create user markgeng;
删除用户
drop user markgeng;
查看系统中的已有的用户
select * from pg_user;

psql

查看数据库
\l
切换数据库
\c 数据库名称
- 查看所有表
\d

设置远程访问

打开相关配置文件。

vi  /var/lib/pgsql/9.6/data/postgresql.conf

将该文件中的listen_addresses项值设定为“*”

即:

listen_addresses=  '*'

打开第二个配置文件:

sudo vi /var/lib/pgsql/9.6/data/pg_hba.conf

在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置

host all all 0.0.0.0/0 md5

如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。

保存,重启一下:

systemctl restart postgresql-9.6

postgresql9.6升级到postgresql10

来源草稿如下,里面记录了各种掉坑经历。
【centos7】升级postgresql9.6到版本10以及迁移原有数据库的一次尝试【草稿】

当然了,为了最真实地进行原汁原味的升级历程,这里又找了一台pg9.6的服务器来进行尝试。

请先到官网看看具体流程:

Linux downloads (Red Hat family)

按照官网提示,选择对应平台及架构,
在这里插入图片描述

可以得到安装的命令:

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

注意,我这里因为之前安装过9.6,所以自行关闭了:

systemctl stop postgresql-9.6

在这里插入图片描述

好了,安装好源,那么就安装pg10:

yum install postgresql10

在这里插入图片描述

在这里插入图片描述

安装server包

yum install postgresql10-server

在这里插入图片描述

安装目录默认在 /usr下面,我们可以看到:

在这里插入图片描述

补充:

在这里插入图片描述

contrib也要安装的:

yum install -y postgresql10-contrib

初始化数据库

/usr/pgsql-10/bin/postgresql-10-setup initdb

在这里插入图片描述

初始化数据库完成。

#禁用服务
systemctl disable postgresql-9.6
systemctl stop postgresql-9.6
【分歧点–有旧版本且不需要迁移数据】

删除9.6版本,请自行查找删除方式。

【分歧点–有旧版本且需要将旧版本数据迁移的情况下】

然后,请将旧版本数据库disable掉,然后端口改成其他端口,不要占用5432【这个端口】了,防止冲突—,假设9.6版本的端口为5434:

#禁用服务
systemctl disable postgresql-9.6

然后改端口:

vim  /var/lib/pgsql/9.6/data/postgresql.conf

在这里插入图片描述

在这里插入图片描述

好了,已经进行了对应选择以后,

然后启动服务

systemctl enable postgresql-10
systemctl start postgresql-10

咱们继续配置postgresql10:

需要配置一下数据库的用户然后进行远程连接:
我们假定远程连接用的账户是dbuser,

注意,在后续数据迁移的时候,pg_upgrade会将原有数据库的所有表包括用户都迁移过来,所以一旦新建了账号角色就会提示错误的,所以到时候我们还是要将dbuser删除掉,但是由于在数据迁移之前我们起码要调通新版本的数据库,包括远程连接,所以无妨。新调通然后再导入数据。

先看看有没有dbuser账号:

groups dbuser

在这里插入图片描述

可以看到有dbuser的账号了,----这机子都是同一个机子,所以有这个账号,不过数据库是没有这个账号的,假设这个机子没有dbuser,那么新建账号如下【用于参考】:

添加用户

1.创建操作系统用户

先到操作系统
##系统已经有账号的这个就省略了
sudo adduser dbuser   

sudo su - postgres
psql
\password postgres 给postgress设置密码
2.创建数据库用户

CREATE USER dbuser WITH PASSWORD 'password';

在这里插入图片描述

好了,账号新建了。
接下来配置一下远程连接这些。

vim  /var/lib/pgsql/10/data/postgresql.conf

将该文件中的listen_addresses项值设定为“*”

即:

listen_addresses=  '*'

在这里插入图片描述

在这里插入图片描述

sudo vim /var/lib/pgsql/10/data/pg_hba.conf
在该配置文件的host all all 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置

host all all 0.0.0.0/0 md5

如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。

在这里插入图片描述

在这里插入图片描述

重启数据库:

systemctl restart postgresql-10

测试能否远程访问数据库:

在这里插入图片描述

远程连接成功。

注意:远程连接成功除了设定pg以外,还是需要开放阿里云端口的,这里没提到,请自行搜索。

好了,目前这个数据库是没有任何东西的。。。嗯,现在来迁移旧版本的数据库吧。

数据库迁移

假如你没有旧数据库或者不想那么麻烦进行迁移,可以无视该节内容

在这里插入图片描述

数据库迁移需要用到一个工具,

/usr/pgsql-10/bin/pg_upgrade

检查是否能够迁移数据库:

删除所有新建的数据库账户

第一点!!!:请将postgresql10数据库里面除了postgres这个账号以外,所有账号都删除掉,譬如刚才的dbuser,否则会出现问题:

在这里插入图片描述

提示错误:

Only the install user can be defined in the new cluster.
Failure, exiting

下面是删除账号过程:

#重启服务先----注意,不重启的话可能会导致下面图示的错误
systemctl restart postgresql-10
su - postgres
psql
drop user dbuser;
删除角色
\q
exit
#退出来

如果你不删除账号,这个画面就会终结你的数据迁移梦想
如果你不删除账号,这个画面就会终结你的数据迁移梦想

删除结果如下:
在这里插入图片描述

关停旧版的postmaster服务
#进入postgres以后
su - postgres
#关停postmater旧版的
/usr/pgsql-9.6/bin/pg_ctl stop

你不做的话,那么下面这幅画面就是你迁移梦想的终结了:

在这里插入图片描述

执行更新可行性检查

pg_upgrade指令形式:

/usr/pgsql-10/bin/pg_upgrade -c -b /usr/pgsql-9.6/bin -B /usr/pgsql-10/bin -d 9.6版本的数据目录 -D 10版本的数据目录 

提示:
默认的数据目录在:
在这里插入图片描述

/var/lib/pgsql/{version}下面

在这里插入图片描述

所以,我们的命令其实是:

/usr/pgsql-10/bin/pg_upgrade -c -b /usr/pgsql-9.6/bin -B /usr/pgsql-10/bin -d /var/lib/pgsql/9.6/data -D /var/lib/pgsql/10/data

好了,正式执行,重启pg10,然后执行下面程序:

systemctl restart postgresql-10
su - postgres
####必须关停9.6的pg_ctl。。。。多关一次不会死的,照样打上去。。
/usr/pgsql-9.6/bin/pg_ctl stop
/usr/pgsql-10/bin/pg_upgrade -c -b /usr/pgsql-9.6/bin -B /usr/pgsql-10/bin -d /var/lib/pgsql/9.6/data -D /var/lib/pgsql/10/data

在这里插入图片描述

好了,允许更新,那么,输入以下更新指令:

### 注意,检查时候带参数 -c ,正式执行的话将 -c 去掉即可,
/usr/pgsql-10/bin/pg_upgrade  -b /usr/pgsql-9.6/bin -B /usr/pgsql-10/bin -d /var/lib/pgsql/9.6/data -D /var/lib/pgsql/10/data

结果:
在这里插入图片描述

成功迁移—按照字面理解,下面进行部分验证。

刚才我们已经将dbuser删掉了,而旧数据库是有dbuser的,那么现在来验证一下,迁移过程中是不是连数据库账号都迁过来了:
注意,迁移后请重启一下服务,因为,服务是暂停了的,你会看到下面的错误

在这里插入图片描述

systemctl restart postgresql-10

然后验证一下,结果:

在这里插入图片描述

好了,连dbuser都迁移过来了。

下面远程连接一下pg10:

在这里插入图片描述

由此看到,数据迁移成功。

本文章已经参考了网上的一些教程,然而,有些地方是冗余以及错漏的。不过为了周密起见,建议各位几篇文章一起参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值