postgreSQL數據備份與遷移的完美實踐


🍎✨ 數據備份與遷移

參考文章

❗️pg_dump命令說明

❗️pg_restore命令說明

Postgresql備份與還原命令pg_dump

PostgreSQL pg_dump&psql 數據的備份與恢復

1、首先安裝一下postgresql

❗️❗️❗️特別要注意版本問題!

❗️❗️❗️后面出了12、13版本了~版本是向下兼容的,安裝的時候一定要注意!!!

brew install postgresql@11

2、修改環境變量使命令生效

# 我的postgre11安裝的目錄是:
/usr/local/Cellar/postgresql@11/11.12/bin

# 修改~/.bash_profile
cd ~/
vim .bash_profile

# 增加PATH,將下面這行加進去
export PATH=/usr/local/Cellar/postgresql@11/11.12/bin:$PATH

# source
source .bash_profile

# 如果使用 zshrc的話,需要再做一步:
echo 'export PATH="/usr/local/Cellar/postgresql@11/11.12/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 驗證一下
which pg_dump
輸出:/usr/local/Cellar/postgresql@11/11.12/bin/pg_dump

3、備份遠程數據庫的表結構到本地

-U:用戶名
-h:host
-p:端口
-d:要導出哪個數據庫的表結構
-f:后面跟導出的文件名,也可以加上完整的路徑
-F:表示導出的文件格式(這里導出成tar類型,如果不指定-F,默認導出文本格式,后綴可以用.sql)
-s:表示只備份表結構!❗️去掉-s會將數據也都導出來
-x:加上它以后可以忽略權限相關的配置!❗️現在數據庫中沒有關於權限的配置,所以暫時可以加上這個參數!
-O:表示忽略用戶owner,導出的sql語句中不包含 WONER TO 語句
-W:表示強制輸入密碼
# 執行命令前將當前目錄切換到Downloads(其他目錄也行): cd ~/Downloads

# ❗️1、生成 tar文件(推薦)
pg_dump -U (用戶名) -h (數據庫的host) -p 5432 -d (數據庫名) -f runfast_struct.tar -F tar -sOW


# 2、生成 sql文件
pg_dump -U (用戶名) -h (數據庫的host) -p 5432 -d (數據庫名) -f runfast_struct.sql -x -sOW

4-1、將表結構導入到目標數據庫

# 如果目標服務器中還沒有數據庫,需要使用 -C 參數創建一下

# owner相關(暫時沒有權限相關的配置的話可以不用搞這個)
--role=(用戶名)

# 執行命令前將當前目錄切換到Downloads(其他目錄也行): cd ~/Downloads

# ❗️方式1: 注意dump的時候得用 -F 命令生成一個tar格式的文件(推薦)
pg_restore -U (用戶名) -h (host) -p 4432 -d (dbname) -O -x < runfast_struct.tar

# 方式2: 如果前面生成的是sql文件,用這個方法。❓但是pgsql命令貌似在遠程沒辦法執行!
pgsql -U (用戶名)  -h (host) -p 4432 -d(dbname) -O -x < runfast_struct.sql

4-2關於dump的時候加上-x參數禁止轉儲權限相關的問題

文檔中關於-x的參數有如下說明:

-x
--no-privileges
--no-acl
	禁止轉儲訪問權限(grant/revoke 命令)。

加上與不加這個-x可以看到只有一些不同,主要是一些權限的配置,不影響遷移后數據庫的讀寫操作!

# 數據庫權限相關,如果沒有用到可以不加
REMOKE ALL ON SCHEMA public FROM PBULIC;
GRANK ALL ON SCHEMA public TO PBULIC;

5、表結構完整性驗證

—— 其實可以將線上的數據庫與新生成的數據庫使用pg_dump命令分別導出成sql文件,比較一下兩個sql文件有沒有不同的地方就好了:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM