pg_basebackup被用於獲得一個正在運行的PostgreSQL數據庫集簇的基礎備份,簡單記錄下過程
1、初始化數據庫(pg版本12.1)
./initdb -USYSTEM -W -D ./data
2、修改配置文件
1、vim postgresql.conf
listen_addresses = '*' wal_level = replica archive_mode = on
archive_command = 'cp %p /home/cli/bin/%f && echo %f >> /home/cli/bin/archive.list' max_wal_senders= 10 wal_keep_segments=1024 hot_standby = on
2、vim postgresql.conf
host replication all 192.168.1.108/32 trust
3、創建基礎備份
主機啟動數據庫
./pg_ctl -D data/ start
備機創建備份集
./pg_basebackup -D /home/cli/pg/bin/back -Ft -v -P -USYSTEM -h 192.168.1.108 -p5432 -R
-----------------
[cli@localhost bin]$ ./pg_basebackup -D /home/cli/pg/bin/back -Ft -v -P -USYSTEM -h 192.168.1.108 -p5432 -R
pg_basebackup: 開始基礎備份,等待檢查點完成
pg_basebackup: 已完成檢查點
pg_basebackup: 預寫日志起始於時間點: 0/2000028, 基於時間軸1
pg_basebackup: 啟動后台 WAL 接收進程
pg_basebackup: 已創建臨時復制槽"pg_basebackup_52255"
24761/24761 kB (100%), 1/1 表空間
pg_basebackup: 預寫日志結束點: 0/2000100
pg_basebackup: 等待后台進程結束流操作...
pg_basebackup: 同步數據到磁盤...
pg_basebackup: 基礎備份已完成
4、備機進行恢復
1、查看備份文件
[cli@localhost back]$ ls base.tar pg_wal.tar
2、解壓備份文件至數據庫data目錄 [cli@localhost back]$ tar -xvf base.tar -C ../data/
3、查看data目錄文件 [cli@localhost data]$ ls backup_label pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans PG_VERSION postgresql.auto.conf tablespace_map base pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_wal postgresql.conf global pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase pg_xact standby.signal
4、復制pg_wal目錄下的日志文件至archive目錄下(/home/cli/bin)
5、修改postgresql.auto.conf,
restore_command = 'cp /home/cli/bin/%f %p'
6、啟動備機數據庫,恢復完成