1. 程式人生 > >postgresql資料庫跨機冷遷移及問題處理

postgresql資料庫跨機冷遷移及問題處理

環境:

資料庫版本:postgresql 9.5

作業系統Alinux   4

作業系統Blinux        5.8

操作內容:

將部署在伺服器A*.*.201.210)上的PG9.5軟體及資料庫資料,遷移到伺服器B*.*.188.197)的相同目錄。

步驟:

一、源端PG軟體及資料庫處理

1、停源端服務

首先關閉A中的postgresql服務

[[email protected] ~]$ pg_ctl stop -m fast

2、壓縮PGHOME PGDATA

關閉伺服器之後返回root目錄直接將PGHOME(軟體) 和PGDATA(資料庫)進行壓縮

[[email protected]

app]# tar zcvf appbackup.tar.gz /app/postgresql/pg951

[[email protected] app]# tar zcvf databackup.tar.gz /app/pgdata/pg951date

3、複製至目標端

將兩個壓縮包上傳到伺服器B上即可:

[[email protected] app]# scp appbackup.tar.gz [email protected]*.*..188.197:/xxxx

[[email protected] app]# scp databackup.tar.gz [email protected]

*.*..188.197:/xxxx

4、複製類庫

PG原始碼安裝時會編譯類庫libreadline.so.4OS層的/usr/lib64(注意區分32位或64),直接複製安裝時需要複製此類庫,否則資料庫無法啟動見後報錯處理部分

#cd /usr/lib64

二、目標端伺服器操作

1、建立使用者

在伺服器B上建立postgres使用者

#useradd postgres

2、設定使用者環境變數

登入postgres使用者配置環境變數

#vi .bash_profile      (內容配成和伺服器A一樣,注意路徑)

3、壓縮包解壓

將兩個壓縮包解壓(注意目錄結構與源伺服器相同)

#tar zxvf appbackup.tar.gz

#tar zxvf databackup.tar.gz

注意相關檔案使用者許可權與源端保持一致

4PG啟動服務

[[email protected]ac97 ~]$#pg_ctl start

[[email protected] ~]$ psql

psql (9.5.1)

Type "help" for help.

postgres=#

成功啟動服務,至此常規PG9.5遷移完成。

附錄:

一、報錯處理

1PG啟動服務報錯

[[email protected] ~]$#pg_ctl start 


Pg_ctl:error while loading shared libraies:libreadline.so.4 :cannot open share.....

缺少PG類庫在PG原始碼安裝時,編譯至OS層的/usr/lib64,注意區分32位或64位。

解決方法:伺服器A中把這個有問題的檔案直接複製過來即可

#pg_ctl start

[[email protected] ~]$ 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直接把這個擴充套件給刪除


然後

[[email protected] plpython]# cd /app/postgresql/pg951/lib

plpython2.so 檔案給刪除

做完這幾步操作之後進入plpython原始碼目錄

2、下載安裝plpythonu擴充套件

下載postgresql原始碼包

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

解壓後進入與原始碼目錄

[[email protected] app]# cd postgresql-9.5.1

編譯:

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

#make

[[email protected] 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即可

[[email protected] ~]$ id

uid=54326(postgres) gid=26(postgres) groups=26(postgres)

[[email protected] ~]# usermod -g oinstall postgres

[[email protected] ~]# su - postgres

[[email protected] ~]$ id

uid=54326(postgres) gid=54321(oinstall) groups=54321(oinstall)

登入查詢外部表即可


相關推薦

postgresql資料庫遷移問題處理

環境: 資料庫版本:postgresql 9.5 作業系統A:linux   4 作業系統B:linux        5.8 操作內容: 將部署在伺服器A(*.*.201.210)上的PG9.5軟體及資料庫資料,遷移到伺服器B(*.*.188.197)的相同目錄。

010.KVM虛遷移

hit -- uuid .cn libvirt code ima all dev 一 實驗環境 原虛機名稱:vm01-centos6.8 原虛機所在宿主機:kvm-host-2 遷移後虛機名稱:vm01-cloud-centos6.8 遷移

域產生原因處理方式

1.跨域產生原因 當前站點頁面訪問當前站點之外的資源 2.產生跨域例子(直接瀏覽器開啟 訪問localhost:8080的資源) <!DOCTYPE html> <html> <head> <title>跨域</titl

oracle資料庫效能瓶頸的定位處理

在進行高併發、大資料量的對資料庫的寫操作時 發現數據庫寫操作耗時甚多,進入https://192.168.6.139:1158/em管理控制檯 進入效能選項卡,如圖oracle1.jpg,當時發現configuration棕色區域耗時較多 點進configuration

mysql和postgresql資料庫間的資料遷移(註釋遷移

package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; im

Oracle資料庫備部署方式

Oracle資料庫如果做叢集的話一般只能使用Oracle自帶的RAC方式,但是如果由於各種原因不能部署RAC的話,可以採用雙機冷備,一臺開機的方式,下面使用VMWare虛擬化平臺為例介紹一下雙機冷備的部署方式。 所需材料 1、兩臺配置一模一樣的主機,主機至少能插兩塊硬碟 2

KVM虛擬共享存儲動態遷移遷移

KVM 虛擬機 學習 交流 雲計算 運行環境一、 配置nfs共享服務器二、 配置KVM虛擬化三、 創建橋接網卡四、 配置kvm服務器並實現動態遷移五、 配置冷遷移運行環境KVM虛擬機兩臺(linux 7.4)IP地址:192.168.80.100(KVM01)IP地址:192.1

Flask資料庫遷移建表

1 資料庫遷移 1.1 目錄結構 |-- app | |-- __init__.py | |-- __pycache__ |-- config.py | |-- README | |-- __pycache__ | |-- alembic.ini | |-

Flask修煉——資料庫遷移藍圖!

內容概述: 資料庫遷移、 藍圖、 單元測試。 資料庫遷移 在開發過程中,需要修改資料庫模型,而且還要在修改之後更新資料庫。最直接的方式就是刪除舊錶,但這樣會丟失資料。 更好的解決辦法是使用資料庫遷移框架,它可以追蹤資料庫模式的

lavarel-資料庫遷移artisan常用命令

檢視解析 lavarel前端檔案儲存為.blade.php型別的檔案,解析方法為{{}} 也可以用.php結尾,但是解析時只能用原生方法<?php echo $title;?> 資料庫遷移 資料庫配置檔案在/.env檔案中 遷移檔案用命令生成,不需要自己寫,生成後再補

Postgresql資料庫遷移工作

日常開發過程中,難免會遇到資料庫遷移的這種工作。 下面是我總結的一些postgresql資料庫相關的遷移方法: 資料庫的匯入匯出是最常用的功能之一,每種資料庫都提供有這方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump,而P

Mysql資料庫併發插入死鎖問題處理方式

Mysql有很多坑,對Mysql多執行緒支援這塊不是很熟的話就會莫名其妙地發生一些詭異的問題。多執行緒執行緒併發操作時最容易產生死鎖問題。所以很多大資料的操作一般都採用NoSQL資料庫方案來處理,或者讀寫分離,只需要做好冪等設計即可。如何避免資料庫併發1.通過資料庫連線池做分

s5pv210刷問題處理方法

cmd 處理 老師 命令行 boot window下 ati 視頻 lin 這篇文章是我整整刷開發板三天換來的經驗,希望對大家有所幫助!首先開發板是九鼎的開發板,學習視頻是朱老師ARM裸機遇到的問題總結下:1:win7系統下刷機,secureCRT有顯示,刷完了uboot,

oracle資料庫賬戶被鎖原因查詢處理

最近部署專案,啟動之後有一個賬戶一直被鎖。 資料庫賬戶被鎖一般是連線使用者密碼錯誤次數超過限制,被鎖死。 查詢原因: 1.檢視連線配置的使用者名稱密碼是否有誤。 這個如果有誤,改一下配置就好了。 2.檢視是否因為自己的連線造成的鎖死。 這個有的時候會被坑,原來部署專案,發現

Windows下Postgresql資料庫的備份恢復

--通過cmd進入目錄cd C:\Program Files\PostgreSQL\9.6\bin--執行匯出,localhost 或者IPpg_dump -h localhost -U postgres ship> C:\ship.bak--執行匯入psql -h l

PostgreSQL資料庫、表空間、角色使用者

一、建立資料庫 1、通過pgAdmin建立資料庫TestDb1: 開啟資料庫TestDb1看到建庫指令碼: 在目錄——PostgreSQL(pg_catalog)——資料表——pg_database中可以檢視多了一個數據庫TestDb1: select oid,* from pg_database;

deepin linux下新增源,安裝git配置msf的postgresql資料庫

由於機緣巧合用上了深藍linux又想在其下安裝kali的工具但是源新增無效,在閱覽大批網文後開闢一條奇淫技巧安裝gitsudo apt-get install git新增kali源(藉助katoolin從git上新增源到本地)如何使用git clone https://git

[Oracle資料庫] oracle資料庫字符集characterset遷移變更之csscancsalter.plb系列三

背景 本文主要熟悉下如何用csscan以及csalter指令碼變更資料庫字符集,進一步理解如何調整資料庫字符集的知識。 之前的相關文章連結: oracle10g_csscan_更變資料庫字符集及國家字符集的工具測試 http://blog.itpub.net/9240380/viewspace-614070/

postgresql資料庫對json資料的處理

1. 兩種資料形式儲存 json,jsonb (1)json儲存快,使用慢; 存的時候不做處理,使用時再解析 (2)jsonb儲存稍慢,儲存時就做了解析,使用時速度較快 (3)兩者的部分函式很相似,稍有區別 2.使用例子 (1)建立學生表 C