PostgreSQL教程 - Part 11:PostgreSQL控制文件作用與管理

PostgreSQL從小白到專家,是從入門逐漸能力提升的一個(gè)系列教程,內(nèi)容包括對(duì)PG基礎(chǔ)的認(rèn)知、包括安裝使用、包括角色權(quán)限、包括維護(hù)管理、、等內(nèi)容,希望對(duì)熱愛PG、學(xué)習(xí)PG的同學(xué)們有幫助,歡迎持續(xù)關(guān)注CUUG PG技術(shù)大講堂。
Part 11:PostgreSQL控制文件作用與管理
內(nèi)容1:PostgreSQL控制文件位置
內(nèi)容2:PostgreSQL控制文件內(nèi)容
內(nèi)容3:PostgreSQL控制文件維護(hù)
內(nèi)容4:PostgreSQL控制文件備份
內(nèi)容5:PostgreSQL控制文件恢復(fù)
11.1、控制文件位置
控制文件位置與大小
邏輯位置:存放在pg_global表空間中
物理位置與名字:$PGDATA/global/pg_control
控制文件的物理大小是8K
控制文件內(nèi)容盡量保持小于512個(gè)字節(jié)
11.2、控制文件內(nèi)容
· initdb時(shí)生成的靜態(tài)信息
pg_control version number: 1201
Catalog version number: 201909212
Database system identifier: 6744130188358323871
Maximum data alignment: 8
Database block size: 8192
Blocks per segment of large relation: 131072
WAL block size: 16384
Bytes per WAL segment: 16777216
Maximum length of identifiers: 64
Maximum columns in an index: 32
Maximum size of a TOAST chunk: 1996
Date/time type storage: 64-bit integers
Float4 argument passing: by value
Float8 argument passing: by value
· postgresql.conf中的配置信息
wal_level setting: replica
wal_log_hints setting: on
max_connections setting: 1000
max_worker_processes setting: 8
max_wal_senders setting: 10
max_prepared_xacts setting: 0
max_locks_per_xact setting: 64
track_commit_timestamp setting: off
· write-ahead logging以及checkpoint的動(dòng)態(tài)信息
Latest checkpoint location: 2E/CD32D270
Latest checkpoint's REDO location: 2E/CD32D270
Latest checkpoint's REDO WAL file: 000000110000002E000000CD
Latest checkpoint's TimeLineID: 17
Latest checkpoint's PrevTimeLineID: 17
Latest checkpoint's full_page_writes: on
Latest checkpoint's NextXID: 0:538902
Latest checkpoint's NextOID: 385511
Latest checkpoint's NextMultiXactId: 5
……
Time of latest checkpoint: Sat 18 Jul 2020 10:11:14 PM EDT
Fake LSN counter for unlogged rels: 0/3E8
Backup start location: 0/0
Backup end location: 0/0
End-of-backup record required: no
11.3、控制文件維護(hù)
1、固定部分
?初始化數(shù)據(jù)庫(kù)時(shí)產(chǎn)生,固定不變
2、有些信息隨時(shí)更新
?如果發(fā)生檢查點(diǎn)、備份、日志切換等操作,則自動(dòng)更新
3、postgres.conf相關(guān)參數(shù)被更新
?如果配置文件中重要的相關(guān)參數(shù)被修改,則也會(huì)自動(dòng)更新
4、數(shù)據(jù)庫(kù)備份時(shí)會(huì)一起備份
5、不能手動(dòng)修改該文件
6、啟動(dòng)和恢復(fù)數(shù)據(jù)庫(kù)時(shí)需要,當(dāng)前沒有避免發(fā)生單一故障點(diǎn)而設(shè)計(jì)的保護(hù)策略
11.4、控制文件備份
備份方式(與數(shù)據(jù)庫(kù)備份一起備份,一起恢復(fù),不能單獨(dú)備份)
1、tar命令
tar -jcv -f baseline.tar.bz2 $PGDATA
2、pg_basebackup命令
pg_basebackup -D bk1 -Ft -z –P
3、pg_rman命令
pg_rman backup --backup-mode=full -B /home/postgres/pg_rman_bk/ -C -P
11.5、控制文件恢復(fù)
重建控制文件
Pg10版本以前版本使用pg_resetxlog工具
Pg10及以后版本使用pg_resetwal工具
pg_resetwal工具需要下面四個(gè)參數(shù):
· 1、
-l XLOGFILE force minimum WAL starting location for new transaction log
?( XLOGFILE強(qiáng)制新事務(wù)日志的最小WAL起始位置)
定位辦法:pg_wal下面創(chuàng)建的最大的日志文件,編號(hào)+1
cd /usr/local/pg12.2/data/pg_wal/
ll
-rw------- 1 postgres postgres 270 Mar 21 09:40 00000010.history
-rw------- 1 postgres postgres 16777216 Jul 19 06:19 0000001100000038000000C4
-rw------- 1 postgres postgres 16777216 Jul 19 06:16 0000001100000038000000C5
-rw------- 1 postgres postgres 16777216 Jul 19 06:17 0000001100000038000000C6
-rw------- 1 postgres postgres 16777216 Jul 19 06:17 0000001100000038000000C7
確定-l 的參數(shù)值為:
-l 0000001100000038000000C8
· 2、
-O OFFSET set next multitransaction offset
在pg_multixact/members下面,取最大值加1然后乘以65536.轉(zhuǎn)換成16進(jìn)制為100000,然后末尾添加4個(gè)0
-O=0x1000000000
步驟:
1、進(jìn)入相應(yīng)目錄
cd $PGDATA/pg_multixact/members/
2、查看文件
ll-rwxr-x--- 1 postgres postgres 8192 Jul 18 22:11 0000
3、計(jì)算結(jié)果
-O=0x1000000000
· 3、
-m =MXID,MXID set next and oldest multitransaction ID
在pg_multixact/offsets下面,找到最大的文件編號(hào),+1 后面跟上4個(gè)0
如:0000
-m =0x00010000,0x00010000
步驟:1、進(jìn)入相應(yīng)目錄
cd $PGDATA/pg_multixact/offsets
2、查看文件
-rwxr-x--- 1 postgres postgres 8192 Jul 19 05:57 0000
3、計(jì)算結(jié)果
-m=0x00010000,0x00010000
· 4、
-x XID set next transaction ID
在pg_xact下面,找到最大的文件編號(hào),+1 后面跟上5個(gè)0
如:0000
-x = 0x000100000
步驟:1、進(jìn)入相應(yīng)目錄
cd $PGDATA/pg_xact/
2、查看當(dāng)前文件
lltotal 140-rwxr-x--- 1 postgres postgres 139264 Jul 18 23:21 0000
3、計(jì)算-x值
-x=0x000100000
執(zhí)行重建控制文件語(yǔ)句:
cd $PGDATA/global
touch pg_control
pg_resetwal -l 0000001100000038000000CC -O 0x1000000000 \
-m 0x00010000,0x00010000 -x 0x000100000 -f $PGDATA
pg_controldata
?啟動(dòng)數(shù)據(jù)庫(kù):
pg_ctl start

以上就是Part 11 - PostgreSQL控制文件作用與管理 的內(nèi)容,歡迎進(jìn)群一起探討交流QQ交流群:752027153
微信交流群:聯(lián)系客服拉你進(jìn)微信PG交流群
釘釘交流群:35822460,釘釘群有專門講解公開課
往期課程及視頻,聯(lián)系cuug咨詢老師
PostgreSQL教程 - Part 11:PostgreSQL控制文件作用與管理的評(píng)論 (共 條)
