PostgreSQL DBA(91) - PG upgrade
PostgreSQL的大版本釋出週期通常為1年,而PostgreSQL 12即將釋出,新版本除了修復了Bug,提供了新特性之外還對效能有所增強,對於使用舊版本但希望升級到新版本的資料庫,本節介紹了PG升級的幾種方法,分別是Logical Dump/restore、Binary In-Place Upgrades和Logical Replication。
Logical Dump/restore
邏輯匯入匯出,把資料庫逆向為普通的SQL語句.使用的工具是pg_dump/pg_dumpall和pg_restore,其中pg_dump面向database級別,pg_dumpall面向instance級別.
優勢
1.100%安全.對原例項沒有任何影響,方便測試.
2.可從”read only”庫中匯出,對原庫沒有效能影響.
3.靈活.可指定schema或物件,可重新對映/刪除屬主或訪問許可權.
劣勢
1.效能差.雖然可以並行的dump資料,但在資料量超過100G時,需要注意是否存在效能問題,而且在restore時會很耗主機資源.
2.一致性難以保證.在dump時需要源庫離線,否則在dump時仍有資料變化,那麼源庫和目標庫會處於不一致的狀態.
Binary In-Place Upgrades
原地升級,使用的工具是pg_upgrade.在執行pg_upgrade前,需安裝新版本的二進位制檔案並使用新版軟體初始化例項.
優勢
1.高效能.特別是使用 “pg_upgrade –link –jobs X”這種模式的情況下.
劣勢
1.存在一定的風險,需要增加額外的測試工作.
2.所有的擴充套件和其他模組均需要在新例項上安裝.
3.不存在半線上模式,必須完整離線.
4.如果不使用-link模式,則會丟失所有的備用伺服器.
5.相對於首次啟動,需要執行analyze.
6.佔用雙倍空間.
Logical Replication
邏輯複製,通過配置邏輯複製實現源庫和目標庫的資料同步.
優勢
1.靈活.可允許目標庫變更模式.
2.安全.對源庫幾乎沒有影響.
3.無需停機.
劣勢
1.配置複雜.
2.如為大庫,則需要較長的配置時間和同步時間.
3.可能需要修改模式,至少需要修改 REPLICA IDENTITY.
對比彙總
下面是三種方法的對比圖:
參考資料
A Primer on PostgreSQL Upgrade Methods
Fast Upgrade of Legacy PostgreSQL with Minimum Downtime Using pg_upgrade
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-2656896/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL DBA(40) - PG 12 pg_promoteSQL
- PostgreSQL DBA(125) - PG 12(TPCC)SQL
- PostgreSQL DBA(41) - PG Index PropertiesSQLIndex
- PostgreSQL DBA(142) - PG 12(Monitoring PostgreSQL VACUUM processes)SQL
- PostgreSQL DBA(82) - PG 12 Improving COPYSQL
- PostgreSQL DBA(83) - Extension(pg_buffercache)SQL
- PostgreSQL DBA(84) - Extension(pg_prewarm)SQL
- PostgreSQL DBA(162) - Extension(pg_catcheck)SQL
- PostgreSQL DBA(92) - PG 12 Improving VACUUMSQL
- PostgreSQL DBA(67) - PG 12 SQLJSON pathSQLJSON
- PostgreSQL DBA(63) - Extension(pg_qualstats)SQL
- PostgreSQL DBA(163) - Extension(pg_cron)SQL
- PostgreSQL DBA(53) - PG 12 Generated columnsSQL
- PostgreSQL DBA(37) - PG 12 REINDEX CONCURRENTLYSQLIndex
- PostgreSQL DBA(39) - PG 12 Functions for partitionsSQLFunction
- PostgreSQL DBA(46) - PG Operator classes and familiesSQL
- PostgreSQL DBA(36) - PG 12 Inlined WITH queriesSQLinline
- PostgreSQL DBA(189) - PG 14 Monitoring ImprovementsSQL
- PostgreSQL DBA(183) - PG 14(Better JSON)SQLJSON
- PostgreSQL DBA(146) - pgAdmin(pg_dumpall vs pg_dump)SQL
- PostgreSQL DBA(79) - Locks(pg_blocking_pids)SQLBloC
- PostgreSQL DBA(94) - PG 12 Improving Partition(Select)SQL
- PostgreSQL DBA(93) - PG 12 Improving Partition(Insert)SQL
- PostgreSQL DBA(129) - Extension(pg_variables).mdSQL
- PostgreSQL DBA(138) - PG 13(Drop database force)SQLDatabase
- PostgreSQL DBA(63) - Extension(pg_stat_statements)SQL
- PostgreSQL DBA(62) - PG 12 More progress reportingSQL
- PostgreSQL DBA(172) - PG 13(WAL activity in EXPLAIN)SQLAI
- PostgreSQL DBA(188) - PG 14 enable_memoizeSQL
- PostgreSQL DBA(171) - PG 13(pg_stat_statements to track planning statistics)SQL
- PostgreSQL DBA(18) - pg_waldump工具簡介SQL
- PostgreSQL DBA(4) - PG 11 New Features#1SQL
- PostgreSQL DBA(5) - PG 11 New Features#2SQL
- PostgreSQL DBA(6) - PG 11 New Features#3SQL
- PostgreSQL DBA(70) - PG 12 Add SETTINGS option to EXPLAINSQLAI
- PostgreSQL DBA(98) - PG 12 Faster float conversion to textSQLAST
- PostgreSQL DBA(95) - PG 12 Partition(out of shared memory)SQL
- PostgreSQL DBA(126) - PG 12(搭建流複製)SQL