【centos7】升级postgresql9.6到版本10以及迁移原有数据库的一次尝试【草稿】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdnight/article/details/83313598

postgresql9.6升级到postgresql10

参考资料:

postgresql9.5.0升级至10.3

pg_upgrade 升级数据库方式一 拷贝文件

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

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

然后才开始安装:

在这里插入图片描述

在这里插入图片描述

扫描二维码关注公众号,回复: 3693967 查看本文章

安装pg10:

yum install postgresql10

在这里插入图片描述

安装成功:

在这里插入图片描述

安装server包:

yum install postgresql10-server

在这里插入图片描述

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

在这里插入图片描述

初始化数据库及允许服务

注意,假如你之前有安装数据库,请先禁用服务,。
systemctl disable postgresql-9.6



![在这里插入图片描述](https://img-blog.csdn.net/20181023174507474?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NkbmlnaHQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

#先切换账号。。
su - postgres
/usr/pgsql-10/bin/postgresql-10-setup initdb
systemctl enable postgresql-10
systemctl start postgresql-10

在这里插入图片描述

在这里插入图片描述

好了,启动pg10以后,我们继续之前的配置,譬如,需要配置一下数据库的用户
ps:对于需要迁移的数据库,假设之前的数据库的拥有人是dbuser,那么新数据库本人建议也是要特地新建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以外,还是需要开放阿里云端口的,这里没提到,请自行搜索。

虽然已经可以连接上,但是之前的9.6的数据不在。。嗯,虽然数据库已经升级了,但是数据不在。接下来就是迁移数据库
了。

数据库迁移

在这里插入图片描述

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

/usr/pgsql-10/bin/pg_upgrade

注意,由于各个文章的用法都是需要先检查一下是否能够升级,要启动服务,所以,为了两个服务能运行,需要将9.6的端口改改【这里改为5434】然后再检查:

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

在这里插入图片描述

在这里插入图片描述

然后开启服务:

在这里插入图片描述

好了,

检查是否能够更新:

su - postgres
/usr/pgsql-10/bin/pg_upgrade -c -b /usr/pgsql-9.6/bin -B /usr/pgsql-10/bin -d 9.6版本的数据目录 -D 10版本的数据目录 -p 5434 -P 5432 -U postgres

注意,默认的数据目录在:
在这里插入图片描述

/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 -p 5434 -P 5432 -U postgres

好了,具体出现问题,提示关闭postmaster服务。

在这里插入图片描述

所以,嗯,先停老版本数据库:

su - postgres
/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 -p 5434 -P 5432 -U postgres

在这里插入图片描述

提示错误:

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

好了,

搜索结果如下:

在这里插入图片描述

根据提示,回想一下之前的配置,似乎添加了一个dbuser的账号,于是。。。我们试试删除这个账号看看

#重启服务先
systemctl restart postgresql-10
su - postgres
psql
drop user dbuser;
删除角色
\q
exit
#退出来

#然后进去

su - postgres
psql
/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 -p 5434 -P 5432 -U postgres


在这里插入图片描述

果然!!!!删除角色之后就可以了。。。

在这里插入图片描述

既然已经可以升级了,那么就升级吧:

/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 -p 5434 -P 5432 -U postgres
#就是去掉了 -c 这个参数

在这里插入图片描述

出现异常了,这次是:

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.

好了,根据提示:

/usr/pgsql-10/bin/pg_ctl stop

在这里插入图片描述

嗯。。坑爹了。。看来又要重启服务了。。。

退出当前模式

exit

然后这样:
这样来试试:

systemctl restart postgresql-10

su - postgres
/usr/pgsql-9.6/bin/pg_ctl stop
/usr/pgsql-10/bin/pg_ctl stop

不行。。。
出现错误:

在这里插入图片描述

继续尝试,就关闭10版本的pg ctl:
在这里插入图片描述

不行。。。好了,破镜子破摔:
直接关停9.6的服务:

在这里插入图片描述

在这里插入图片描述

what?更新成功。。

然后重启服务,远程连接:

在这里插入图片描述

在这里插入图片描述

真的可以连接上了,
还记得我们的数据库已经删除了dbuser这个账号吗?现在我们来看看是不是迁移的时候额外添加了dbuser的账号:

在这里插入图片描述

所以。。。难怪要删除新建的用户账号了,因为压根就是连用户账号一起导入的。。。

猜你喜欢

转载自blog.csdn.net/cdnight/article/details/83313598