postgresql9.5.0升級至10.3
Linux發行版本:CentOS release 6.7 (Final)
舊pg資料庫版本:9.5.0
舊版本bin目錄:/usr/local/pgsql/bin
舊版本data目錄:/alidata1/data
舊版本WAL block size大小:8192
舊版本埠:5432
外掛資訊:pg_stat_statements V1.3 on schema basisdata
二、 安裝pg10.3版本
1、下載原始碼檔案至伺服器
2、解碼
tar jxvf postgresql-10.0.tar.bz2
3、編譯(設定安裝目錄和安裝選項)
cd postgresql-10.0
./configure --prefix=/usr/local/pgsql10 --with-pgport=5432 --with-wal-blocksize=8
若提示安裝失敗,原因是缺少GCC、readline和zlib,先檢視本機是否安裝,然後再根據情況自行安裝rpm -qa | grep gcc
yum search gcc
yum install gcc
readline和zlib安裝方式相同
4、安裝
gmake world
gmake install -world
5、建立data資料夾
mkdir /usr/local/pgsql/data
6、建立postgres使用者和密碼
adduser postgres
passwd postgres
7、修改data目錄許可權,將其賦給postgres
chown -R postgres:postgres /usr/local/pgsql10/data/
chmod -R 700 /usr/local/pgsql10/data/
8、設定環境變數
修改系統環境變數檔案
# vim /etc/profile
新增環境變數
LD_LIBRARY_PATH=/usr/local/pgsql10/lib --是psql命令可用
export LD_LIBRARY_PATH
PGDATA=/usr/local/pgsql10/data
export PGDATA
PATH=$PATH:/usr/local/pgsql10/bin --pg_ctl命令可用
export PATH --使自己定義的變數生效,類似於全域性變數
儲存後,讀取profile檔案
# source profile
9、切換至postgres賬號,初始化資料庫
su - postgres
/usr/local/pgsql10/bin/initdb -E UTF8 -D /usr/local/pgsql10/data --locale=en_US.UTF-8 -U postgres -W
10、開啟postgres服務
/usr/local/pgsql10/bin/pg_ctl start
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
三、 升級
1、 新版本初始化成功以後,安裝pg_upgrade外掛
cd contrib
gamke
gmake install
2、 修改配置檔案postgresql.conf和pg_hba.conf2.1、修改pg_hba.conf
因為升級需要多次連線新老叢集資料庫例項, 所以修改為使用本地trust認證
2.2、修改postgresql.conf
將老版本的postgresql.conf檔案拷貝至新版本的相應目錄下,然後修改新版本的埠為5434(與編譯時已經指定的埠相同)
3、 停老庫
/usr/local/pgsql95/bin/pg_ctl stop
4、 建立upgrade資料夾,並賦權
su - root
cd /usr/local/pgsql10
mkdir upgrade
chown postgres:postgres upgrade
su - postgres
cd /usr/local/pgsql10/upgrade
5、 修改profile檔案,LD_LIBRARY_PATH指向新庫cd /etc
vim profile
LD_LIBRARY_PATH=/usr/local/pgsql95/lib
export LD_LIBRARY_PATH
6、 檢驗更新
/usr/local/pgsql10/bin/pg_upgrade -c -b /usr/local/pgsql95/bin -B /usr/local/pgsql10/bin -d /usr/local/pgsql95/data -D /usr/local/pgsql10/data -p 5432 -P 5434 -U postgres
解決完上述問題後,重新檢驗,出現如下結果
說明新老資料庫相容,可以進行升級
7、 升級
升級有兩種方式
一是:預設的通過拷貝資料檔案到新的data目錄下,速度較慢,但原庫可用
二是:建立硬連結,速度較快,但原庫不可用,新增--link命令即可執行
由於資料量較大,本次測試是採用硬連結的方式/usr/local/pgsql10/bin/pg_upgrade --link -b /usr/local/pgsql95/bin -B /usr/local/pgsql10/bin -d /usr/local/pgsql95/data -D /usr/local/pgsql10/data -p 5432 -P 5434
四、 遇到的問題:1、 有三張表的欄位不合法:
biuse.temp_xcm_0402;
biuse.temp_xcm_0402_2;
biuse.temp_xcm_0402_3;
解決方案:刪除這三張表
2、 生產環境安裝了pg_stat_statements外掛
由於生產環境安裝了pg_stat_statements外掛,而在升級的時候,新版本並未安裝該外掛,所以報錯解決方案:
1、 在升級的時候,在新版本原始碼包的該目錄下,需要make & make install相應的外掛,具體目錄如下postgresql-10.0/contrib/pg_stat_statements
2、 然後修改老版本的配置檔案postgresql.conf,將pg_stat_statements對應到元件暫時註釋掉,然後再將老版本的配置檔案拷貝到10.3版本對應的目錄下,才能啟動。
3、 存在以pg_開頭的使用者
10.0版本開始是不支援以pg_開頭的使用者的,因為這是系統的預設使用者解決方案:收回該使用者的所有許可權,並刪除該使用者
revoke all on schema public from pg_rd;
drop role pg_rd;
升級檢測成功,可以進行升級
4、 wal-blocksize問題,由於該引數新老版本對不上,導致檢驗失敗,解決方法是刪除資料庫,然後重新編譯,並在編譯是指定wal-blocksize的大小,然後重新檢驗
5、 locale引數對不上,解決方案是刪除data目錄,重新初始化,並修改locale引數的指定值
相關文章
- Oracle 10.2.0.5升級至11.2.0.4Oracle
- ThinkPHP升級至 5.1.18 版本PHP
- MongoDB 3.2 升級至 3.4.6MongoDB
- glibc2.12升級至2.15
- php5.6 升級至7.2.7PHP
- openssh升級7.4p1至8.4p1、openssl升級至openssl-1.1.1h
- 內網gitlab11.2升級至11.4.5內網Gitlab
- Linux平滑編譯升級php至5.5.0Linux編譯PHP
- 如何Fedora 24升級至Fedora 25版?Fedora24升級至Fedora25版的詳細教程
- confluence 4.2 升級至 6.10.x 記錄
- iOS12升級與降級至iOS11.4./11.3.1教程 iOS12怎麼升級iOS
- 【邏輯DG滾動升級三】ORACLE11204 邏輯DG滾動升級至12C---正式升級Oracle
- Centos7 升級至openssh-9.8p1CentOS
- 【資料庫】mysql5.6升級至5.7(物理方式)資料庫MySql
- 【UP_ORACLE】使用AutoUpgrade工具升級Oracle 11.2.0.4至12.2.0.1Oracle
- windows10 MySQL5.7升級至MySQL8.0WindowsMySql
- 10.3
- Mac升級至macOS High Sierra後導致git無法使用MacGit
- 京東 vue3 元件庫震撼升級,如約而至!Vue元件
- redhat 6.5 mysql 升級5.5.48經mysql 5.6.32至mysql 5.7.16實施概略RedhatMySql
- MVC+EFCore 完整教程18 -- 升級分佈檢視至 View ComponentMVCView
- SMSSDK從2.x版本升級至3.x版本指導
- react-router v3 升級至 v6 探索小結React
- Nacos 爆重大 Bug!!不要升級,不要升級,不要升級
- iOS11.4.1升級iOS12正式版攻略 iOS11怎麼升級至iOS12正式版?iOS
- 【邏輯DG滾動升級二】ORACLE11204 邏輯DG滾動升級至12C---DG端前期準備Oracle
- Truffle 2.0升級3.0升級指南
- 【邏輯DG滾動升級一】ORACLE11204 邏輯DG滾動升級至12C---生產端前期準備Oracle
- Filecoin資訊:Filecoin網路將升級至Lotus v1.2.0版本
- 【記錄】Ubuntu18.04 下升級 Node.js 至最新版本UbuntuNode.js
- [記錄] Ubuntu18.04 下升級 Node.js 至最新版本UbuntuNode.js
- Kubernetes 叢集無損升級實踐 轉至後設資料結尾
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- OpenAI未至,Open-Sora再度升級!已支援生成16秒720p影片OpenAISora
- 百度AutoDL重磅升級至3.0:設計、遷移、適配全面“進化”
- Apache DolphinScheduler 1.3.4升級至3.1.2版本過程中的踩坑記錄Apache
- vue2專案升級至vue3方案步驟踩坑Vue
- (十二).NET6 + React :升級!升級!還是***升級!!!+ IdentityServer4實戰ReactIDEServer