postgresql從入門到精通教程 - 第36講:postgresql邏輯備份
PostgreSQL從小白到專家,是從入門逐漸能力提升的一個系列教程,內容包括對PG基礎的認知、包括安裝使用、包括角色許可權、包括維護管理、、等內容,希望對熱愛PG、學習PG的同學們有幫助,歡迎持續關注CUUG PG技術大講堂。
第36講:PostgreSQL邏輯備份
第36講:12月02日(週六)19:30-20:30,往期公開課的文件及影片,聯絡CUUG
內容1:邏輯備份概述
內容2:pg_dump使用
內容3:pg_dumpall使用
內容4:copy使用
PG匯出匯入工具
PG匯出匯入概述
· 可以使用這些實用程式執行以下操作:
歸檔歷史資料
儲存表定義以防止使用者出錯
在計算機和資料庫之間或PostgreSQL伺服器的不同版本之間移動資料
在資料庫之間傳輸資料
呼叫匯出和匯入程式的方法
命令列介面
其它管理工具
匯出模式
· pg_dump只能備份單個資料庫,不會匯出角色和表空間相關的資訊,而且恢復的時候需要建立空資料庫。
· pg_dumpall可以備份所有資料庫,並且備份角色、表空間。
-F c 備份為二進位制格式, 壓縮儲存. 並且可被 pg_restore 用於精細還原。
-F p 備份為文字, 大庫不推薦。
呼叫pg_dump
語法:
pg_dump [選項]... [資料庫名字]
示例:
pg_dump testdb > testdb.sql
pg_dump -F c -f testdb.dmp -C -E UTF8 -h 127.0.0.1 -U postgres testdb
pg_dump -F p -f testdb.sql -C -E UTF8 -h 127.0.0.1 -U postgres testdb
邏輯恢復
· 恢復順序
1.建立新表
2.匯入資料
3.建立索引
4.觸發器已匯入
5.在新表上啟用完整性約束
6.建立函式
· 恢復資料
文字格式備份恢復方式:
1、建立新資料庫
CREATE DATABASE new_db1;
2、恢復資料
psql new_db1 < testdb.sql
二進位制格式備份恢復方式:
1、建立新資料庫
CREATE DATABASE new_db1;
2、恢復資料
pg_restore -d new_db1 testdb.dmp
二進位制備份實現精細恢復
· 利用toc檔案實現精細恢復
1、根據二進位制備份檔案生成 toc 檔案
pg_restore -l -f testdb.toc testdb.dmp
2、修改 toc 檔案,用‘;’號註釋掉不用還原的內容
203; 1259 40996 TABLE public dept postgres
204; 1259 41001 TABLE public emp postgres
;202; 1259 16391 TABLE public t1 postgres
2840; 0 40996 TABLE DATA public dept postgres
2841; 0 41001 TABLE DATA public emp postgres
;2839; 0 16391 TABLE DATA public t1 postgres
3、以toc檔案做恢復
pg_restore -F c -L testdb.toc -d testdb testdb.dmp
其它匯出匯入技巧
· 利用管道符實現各種匯出匯入
匯出並且壓縮
pg_dump testdb |gzip testdb.sql
解壓並且匯入,壓縮檔案不變,,匯入到testdb資料庫:
gunzip -c testdb.sql.gz |psql testdb
匯出後直接進行恢復,檔案不落地,把testdb資料庫的表匯入到testdb1:
pg_dump testdb| psql testdb1
並行匯出與匯入
pg_dump -Fd -j4 -f testdb.p.dump testdb
pg_restore -d testdb1 -j4 testdb.p.dump
其它備份恢復技巧
· 備份指定/排除的表
如果只想匯出指定的表資料,可以使用-t引數,表名需要用兩個雙引號概括起來。
pg_dump -t ""departments"" -t ""employees"" testdb > testdb.sql
匯出排除指定的表的資料庫
pg_dump -d testdb -T ""emp"" > testdb_ex_emp.sql
使用pg_dump實現主機間資料庫間遷移資料
· 檔案不落地,實現資料庫遷移
1、配置兩個資料庫之間的信任關係(必須)
host all all 192.168.18.0/24 trust
2、在資料庫之間進行某個資料庫遷移
pg_dump -h pg1 -p 1922 -U postgres testdb|psql -h pg2 -p 5432 -U postgres testdb
3、遷移所有的資料庫到目標資料庫
pg_dumpall -h pg1 -p 1922 -U postgres |psql -h pg2 -p 5432 -U postgres
注意:
1、PG資料庫之間遷移無需配置dblink,只要指定主機名和埠即可。
2、由於用的是管道符,所以必須配置兩個資料庫遠端登入信任關係。
3、遷移時兩個資料庫必須要有相同的表空間,需要提前建立。
copy概述
· 實現表與檔案之間的互動
copy 命令用於資料庫中表與作業系統檔案(和標準輸出、標準輸入)之間的相互複製,可以由表至檔案,也可以由檔案至表。
使用copy實現資料庫表和文字檔案之間資料的遷移,非常方便,比Oracle的sqlloader易用性好。
copy語法
· 語法
檔案到表
COPY table_name [ ( column ...] ) ]
FROM { 'filename' | command' | STDIN }
[ [ WITH ] ( option [, ] ) ]
表到檔案
COPY { table_name column_name [, ...] ) ] | ( query ) }
TO { 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [, ...] ) ]
應用案例
· 檔案到表
檔案到表時,支援的文字內容格式有兩種,一種是tab製表符作為分隔符(不是空格);一種是逗號做為分隔符。
tab鍵作為分隔符:
1 a
2 b
3 c
逗號作為分隔符:
1,a,"I am students"
2,b,"I am teacher"
3,c,"I am boss"
· 檔案到表
檔案到表時,支援的文字內容格式有兩種,一種是tab製表符作為分隔符(不是空格);一種是逗號做為分隔符。
tab鍵作為分隔符:
\copy tab_name from /home/postgres/tab.txt;
逗號做為分隔符:
\copy tab_name from /home/postgres/tab.csv with csv;
· 表到檔案
表到檔案時,支援的文字內容格式有兩種,一種是tab製表符作為分隔符(不是空格);一種是逗號做為分隔符。
tab鍵作為分隔符:
\copy tab_name to /home/postgres/tab.txt;
逗號做為分隔符:
\copy tab_name to /home/postgres/tab.csv with csv;
CUUG PostgreSQL技術大講堂系列公開課,往期影片及文件,請聯絡CUUG客服。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/31544987/viewspace-2998377/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql從入門到精通 - 第35講:中介軟體PgBouncer部署|PostgreSQL教程SQL
- PostgreSQL從入門到精通 - 第40講:資料庫不完全恢復SQL資料庫
- 【零基礎】PostgreSQL從入門到精通SQL
- PostgreSQL從小白到高手教程 - 第41講:postgres表空間備份與恢復SQL
- PostgreSQL從小白到高手教程 - 第47講:JMETER工具使用SQLJMeter
- Jmeter(九) - 從入門到精通 - JMeter邏輯控制器 - 上篇(詳解教程)JMeter
- Jmeter(十) - 從入門到精通 - JMeter邏輯控制器 - 中篇(詳解教程)JMeter
- Jmeter(十一) - 從入門到精通 - JMeter邏輯控制器 - 下篇(詳解教程)JMeter
- PostgreSQL,SQLServer邏輯增量(通過邏輯標記update,delete)同步到Greenplum,PostgreSQLSQLServerdelete
- Jmeter(十二) - 從入門到精通 - JMeter邏輯控制器 - 終篇(詳解教程)JMeter
- PostgreSQL邏輯備份pg_dump使用及其原理解析SQL
- PostgreSQL邏輯備份恢復--pg_dump匯出及psql匯入案例SQL
- PostgreSQL:邏輯結構SQL
- PostgreSQL邏輯複製資料同步到kafkaSQLKafka
- C# 小白菜鳥從入門到精通(第3版)教程C#
- PostgreSQL邏輯複製解密SQL解密
- PostgreSQL 邏輯複製解密SQL解密
- Oracle 邏輯備份之EXPDP精講Oracle
- postgresql備份方式SQL
- 增量備份 PostgreSQLSQL
- Thymeleaf從入門到精通
- LESS從入門到精通
- Git 從入門到精通Git
- Shell從入門到精通
- Promise從入門到精通Promise
- vim從入門到精通
- Charles 從入門到精通
- RabbitMQ從入門到精通MQ
- SAP從入門到精通
- redis從入門到精通Redis
- Android Studio教程從入門到精通2.0Android
- 資源彙集:nginx教程從入門到精通Nginx
- Oracle小白菜鳥從入門到精通教程Oracle
- PostgreSQL 入門SQL
- Postgresql 備份恢復SQL
- PostgreSQL10流式物理、邏輯主從最佳實踐SQL
- ElasticSearch 7.8.1 從入門到精通Elasticsearch
- Eclipse從入門到精通Eclipse