Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了postgresql数据库跨机冷迁移及问题处理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

环境:

数据库版本:POSTGResql 9.5

操作系统Alinux 4

操作系统Blinux 5.8

操作内容:

将部署在服务器A*.*.201.210)上的PG9.5软件及数据库数据,迁移到服务器B*.*.188.197)的相同目录。

步骤:

一、源端PG软件及数据库处理

1、停源端服务

首先关闭A中的POSTGResql服务

[POSTGRes@Amdocs1 ~]$ pg_ctl stop -m fast

2、压缩PGHOME PGDATA

关闭服务器之后返回root目录直接将PGHOME(软件) 和PGDATA(数据库)进行压缩

[root@Amdocs1 app]# tar zcvf appBACkup.tar.gz /app/POSTGResql/pg951

[root@Amdocs1 app]# tar zcvf dataBACkup.tar.gz /app/pgdata/pg951date

3、复制至目标端

将两个压缩包上传到服务器B上即可:

[root@Amdocs1 app]# scp appBACkup.tar.gz root@*.*..188.197:/xxxx

[root@Amdocs1 app]# scp dataBACkup.tar.gz root@*.*..188.197:/xxxx

4、复制类库

PG源码安装时会编译类库libreadline.so.4OS层的/usr/lib64(注意区分32位或64),直接复制安装时需要复制此类库,否则数据库无法启动见后报错处理部分

#cd /usr/lib64

#scplibreadline.so.4.3libreadline.so.4root@*.*.188.197:/usr/lib64/

二、目标端服务器操作

1、@R_391_10589@

在服务器B上创建POSTGRes用户

#useradd POSTGRes

2、设置用户环境变量

登录POSTGRes用户配置环境变量

#vi .bash_profile (内容配成和服务器A一样,注意路径)

3、压缩包解压

将两个压缩包解压(注意目录结构与源服务器相同)

#tar zxvf appBACkup.tar.gz

#tar zxvf dataBACkup.tar.gz

注意相关文件用户权限与源端保持一致

4PG启动服务

[POSTGRes@lsrac97 ~]$#pg_ctl start

[POSTGRes@lsrac97 ~]$ psql

psql (9.5.1)

Type "Help" for Help.

POSTGRes=#

成功启动服务,至此常规PG9.5迁移完成。

附录:

一、报错处理

1PG启动服务报错

[POSTGRes@lsrac97 ~]$#pg_ctl start


pg_ctl:error while loading shared libraIEs:libreadline.so.4:cAnnot open share.....

缺少PG类库在PG源码安装时,编译至OS层的/usr/lib64,注意区分32位或64位。

解决方法:服务器A中把这个有问题的文件直接复制过来即可

#scplibreadline.so.4.3libreadline.so.4root@172.19.188.197:/usr/lib64/

#pg_ctl start

[POSTGRes@lsrac97 ~]$ psql

psql (9.5.1)

Type "Help" for Help.

POSTGRes=#

成功启动服务

二、PYTHON扩展的处理(可选)

1PYTHON语言扩展

迁过来之后编译数据库中的plpython函数发现plpython函数无法使用报错

ERROR: Could not load library "/app/POSTGResql/pg951/lib/plpython2.so": libpython2.3.so.1.0: 无法打开共享对象文件: 没有那个文件或目录

解决方法:将服务器A中的libpython2.3.so.1.0 cp到服务器B对应目录当中

copy过来之后重新编译函数 报错

Could not find platform independent librarIEs <prefix>
Could not find platform dependent librarIEs <exec_prefix>
ConsIDer setTing $PYTHONHOME to <prefix>[:<exec_prefix>]

并且提示找不到相关python模块


此时服务器A上面的python2.3.4的服务器B的版本是2.7.10的 编译plpython插件的时候使用的是2.3.4移到2.7.10可能因为版本不同出现问题

解决方法: 重装目标B服务器 pythonPL/python插件

重装python:

在官网上下载了python2.7.12

地址:https://www.python.org/getit/

将安装包上传到服务器B中并解压 解压后会生成目录Python-2.7.12

进入目录编译安装

#./comfigure --prefix=/opt/python2.7.12 --enable-shared#注意这个参数一定要带

#make

#make install

---完成。

如果在编译POSTGResql源码包 ./configure --prefix=xxxxx --with-python时候报错如下的时候则必须要重装python,否则不用重装,报错如下:

Error:cAnnot build PL/python because libpython is not a shared library(原因是python安装编译时候没有带参数--enable-shared这个参数是./configure的一个参数表示启用动态库版)


重装plpythonu

1、删除原有plpythonu扩展

接着登录pgadmin直接把这个扩展给删除


然后

[root@lsrac97 plpython]# cd /app/POSTGResql/pg951/lib

plpython2.so 文件给删除

做完这几步操作之后进入plpython源码目录

2、下载安装plpythonu扩展

下载POSTGResql源码包

地址:https://www.POSTGResql.org/download/

解压后进入与源码目录

[root@lsrac97 app]# cd POSTGResql-9.5.1

编译:

#./configure --prefix=/app/POSTGResql/pg951 --with-python

#make

[root@lsrac97 app]# cd POSTGResql-9.5.1/src/PL/plpython/

#make install

然后psql登录数据库创建扩展

# create extension plpythonu;

最后成功编译plpython函数



Oracle_fDW扩展修复

由于Oracle_fDW使用了Oracle的动态库 ,而在服务器AOracLE的版本是10G的服务器B中的OracLE版本是11g的所以在使用的时候后有以下错误

ERROR: Could not load library "/app/POSTGResql/lib/Oracle_fDW.so": libclntsh.so.11.1: cAnnot open shared object file: No such file or directory

这个时候到服务器BOracLE_HOME/lib目录下把libclntsh.so.11.1拷贝到PGHOME/lib目录下面并将libclntsh.so.11.1属主chownPOSTGRes

修复后查询外部表

POSTGRes=# SELEct * from PGTEST;

ERROR: error connecTing to Oracle: OCIEnvCreate Failed to create environment handle

DETAIL:

此时检查POSTGRes用户环境变量里面有没有配有Oracle的环境变量

检查发现已配置。

后将POSTGRes用户所属组改为和Oracle同组oinstall即可

[POSTGRes@lsrac97 ~]$ ID

uID=54326(POSTGRes) gID=26(POSTGRes) groups=26(POSTGRes)

[root@lsrac97 ~]# usermod -g oinstall POSTGRes

[root@lsrac97 ~]# su - POSTGRes

[POSTGRes@lsrac97 ~]$ ID

uID=54326(POSTGRes) gID=54321(oinstall) groups=54321(oinstall)

登录查询外部表即可

大佬总结

以上是大佬教程为你收集整理的postgresql数据库跨机冷迁移及问题处理全部内容,希望文章能够帮你解决postgresql数据库跨机冷迁移及问题处理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: