postgres 數(shù)據(jù)庫遷移的幾種方法
環(huán)境說明
本內(nèi)容基于如下環(huán)境完成測試
| 項(xiàng) | 配置說明 | 備注 |
|---|---|---|
| 操作系統(tǒng) | CentOS7 | |
| PG數(shù)據(jù)版本 | 9.6.24 | |
| 操作系統(tǒng)用戶 | root/postgres | |
| 數(shù)據(jù)量 | 用戶(20)、角色(20)、數(shù)據(jù)庫(2)、schema(42)、數(shù)據(jù)量(約160W行) | 數(shù)據(jù)文件約640M |
備份
數(shù)據(jù)備份
#創(chuàng)建備份存放文件夾(確保postgres用戶有權(quán)限) cd /home mkdir posrgres chown -R postgres postgres/ #切換postgres用戶 su - posrgres #執(zhí)行備份 pg_dumpall -U postgres -v -f u_postgres.backup
文件備份
數(shù)據(jù)文件默認(rèn)位置:/var/lib/pgsql/9.6
#切換到數(shù)據(jù)存放位置 cd /var/lib/pgsql/9.6 #停止數(shù)據(jù)庫服務(wù) systemctl stop postgresql-9.6 #壓縮數(shù)據(jù)文件 tar -cvf data.tar.gz data/ #得到的 data.tar.gz 即為壓縮后的數(shù)據(jù)備份文件
遷移方案一:數(shù)據(jù)文件遷移
遷移數(shù)據(jù)文件
此過程需要先行停止pg數(shù)據(jù)庫
完成執(zhí)行文件備份
#確保過程種服務(wù)是停止的 systemctl stop postgresql-9.6 cd /home #創(chuàng)建遷移目錄 并修改權(quán)限 mkdir pgdata ##修改歸屬 chown -R postgres pgdata/ ##修改權(quán)限(必須) chmod 700 pgdata/ #切換至pg用戶 su - postgres #復(fù)制數(shù)據(jù)文件到新位置 cp -rf data/* /home/pgdata/
修改服務(wù)種數(shù)據(jù)文件位置
#編輯服務(wù)配置文件 vim /usr/lib/systemd/system/postgresql-9.6.service #修改配置文件種的數(shù)據(jù)文件路徑 修改:Environment=PGDATA=/var/lib/pgsql/9.6/data/ 為:Environment=PGDATA=/home/pgdata/ #保存退出 #重啟系統(tǒng) reboot

遷移方案二:數(shù)據(jù)還原法
此方案基于pg數(shù)據(jù)庫對(duì)備份還原的支持,使用此方法強(qiáng)烈建議在同版本的數(shù)據(jù)庫上操作
上傳數(shù)據(jù)備份文件
#創(chuàng)建備份文件存放位置 cd /home mkdir postgres #上傳備份文件到上一步的存放位置(上傳過程省略) mv u_postgres.backup postgres/ #修改權(quán)限 chown -R postgres postgres/
使用psql還原
#切換用戶 su - postgres #切換數(shù)據(jù)備份目錄 cd /home/postgres/ #執(zhí)行恢復(fù)(忽略錯(cuò)誤,"postgres"內(nèi)置角色原因) psql -U postgres -f u_postgres.backup #執(zhí)行恢復(fù)(遇到錯(cuò)誤停止,不建議) #psql -U postgres --set ON_ERROR_STOP=on -f u_postgres.backup
常見問題及解決辦法
權(quán)限過大問題

- 遷移目標(biāo)目錄權(quán)限過大
解決辦法: 修改權(quán)限(必須)
chmod 700 pgdata/
目錄錯(cuò)誤或權(quán)限不足問題

- 由于錯(cuò)誤操作導(dǎo)致的目錄無法識(shí)別為有效路徑或者因錯(cuò)誤修改權(quán)限導(dǎo)致的
解決辦法: 修改數(shù)據(jù)文件所在文件夾為posrgres所有
chown -R postgres pgdata chown 700 pgdata #可切換postgres 測試讀寫權(quán)限

到此這篇關(guān)于postgres 數(shù)據(jù)庫遷移的幾種方法的文章就介紹到這了,更多相關(guān)postgres 數(shù)據(jù)庫遷移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PostgreSQL執(zhí)行計(jì)劃的使用與查看教程
PostgreSQL中的執(zhí)行計(jì)劃(或查詢計(jì)劃)是數(shù)據(jù)庫管理系統(tǒng)用來詳細(xì)說明如何執(zhí)行特定SQL查詢的一系列操作步驟,簡單來說,執(zhí)行計(jì)劃就是數(shù)據(jù)庫如何解讀你的SQL語句,本文給大家介紹了PostgreSQL執(zhí)行計(jì)劃的使用與查看教程,需要的朋友可以參考下2025-09-09
PostgreSQL數(shù)據(jù)庫中Sequence的使用方法詳解
在 PostgreSQL 數(shù)據(jù)庫中,Sequence 是一種特殊的表對(duì)象,主要用于生成按順序遞增或遞減的數(shù)字序列,通常用于需要唯一標(biāo)識(shí)符的場景,例如自增 ID,以下是如何在 PostgreSQL 中使用 Sequence 的詳細(xì)步驟,需要的朋友可以參考下2024-11-11
postgresql 除法保留小數(shù)位的實(shí)例
這篇文章主要介紹了postgresql 除法保留小數(shù)位的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
postgreSQL數(shù)據(jù)庫 實(shí)現(xiàn)向表中快速插入1000000條數(shù)據(jù)
這篇文章主要介紹了postgreSQL數(shù)據(jù)庫 實(shí)現(xiàn)向表中快速插入1000000條數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12
PostgreSQL實(shí)現(xiàn)數(shù)據(jù)表跨庫同步的四種方案
文章詳細(xì)介紹了四種用于實(shí)現(xiàn)PostgreSQL數(shù)據(jù)庫表數(shù)據(jù)變化實(shí)時(shí)或定時(shí)同步到另一個(gè)獨(dú)立PG庫的方法,包括觸發(fā)器+外部表、邏輯復(fù)制、Debezium+Kafka和pg_dump定時(shí)任務(wù),針對(duì)不同場景和需求,推薦了最適合的方案,并詳細(xì)闡述了各自的優(yōu)點(diǎn)、適用場景、配置方法和使用注意事項(xiàng)2026-05-05
PostgreSQL中的template0和template1庫使用實(shí)戰(zhàn)
這篇文章主要介紹了PostgreSQL中的template0和template1庫使用實(shí)戰(zhàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
解決postgresql 數(shù)字轉(zhuǎn)換成字符串前面會(huì)多出一個(gè)空格的問題
這篇文章主要介紹了解決postgresql 數(shù)字轉(zhuǎn)換成字符串前面會(huì)多出一個(gè)空格的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12

