Postgresql
pg_basebackup 的 Postgres 初始化
嗨,我在 centos 7 機器上執行,我正在將舊的 postgres 數據庫遷移到新伺服器,它有 10TB 的數據,所以我嘗試使用 pg_basebackup。新伺服器有一個獨立的磁碟,有足夠的儲存空間來處理操作,但它不是主磁碟。我想將 PGDATA 設置到這個大數據盤中。
我已按照以下步驟操作:
- 安裝 postgres-12 和 postgres12-contrib
- 將數據盤掛載到新機器上
- 在數據盤中創建一個空的 pgdata 目錄。全部使用使用者 postgres。
- 採用
/usr/bin/pg_basebackup -h IP_OF_OLD_MACHINE -D /mnt/disks/data-disk/pgdata -P -U USERNAME --wal-method=stream
我認為
pg_basebackup
成功結束了,數據花了幾個小時但完全沒有提示任何錯誤。total 132K -rw-------. 1 postgres postgres 230 Mar 18 12:36 backup_label drwx------. 7 postgres postgres 4.0K Mar 18 12:43 base -rw-------. 1 postgres postgres 30 Mar 19 00:13 current_logfiles drwx------. 2 postgres postgres 4.0K Mar 19 00:13 global drwx------. 2 postgres postgres 4.0K Mar 18 12:36 log drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_commit_ts drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_dynshmem -rw-------. 1 postgres postgres 4.8K Mar 18 12:36 pg_hba.conf -rw-------. 1 postgres postgres 4.7K Mar 18 12:36 pg_hba.conf~ -rw-------. 1 postgres postgres 1.6K Mar 19 00:13 pg_ident.conf drwx------. 4 postgres postgres 4.0K Mar 18 12:36 pg_logical drwx------. 4 postgres postgres 4.0K Mar 18 12:36 pg_multixact drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_notify drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_replslot drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_serial drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_snapshots drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_stat drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_stat_tmp drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_subtrans drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_tblspc drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_twophase -rw-------. 1 postgres postgres 3 Mar 19 08:27 PG_VERSION drwx------. 3 postgres postgres 4.0K Mar 18 12:36 pg_wal drwx------. 2 postgres postgres 4.0K Mar 18 12:36 pg_xact -rw-------. 1 postgres postgres 88 Mar 18 12:36 postgresql.auto.conf -rw-------. 1 postgres postgres 24K Mar 19 08:39 postgresql.conf
好的,現在我正在嘗試使用我剛剛帶來的數據初始化一個 postgres 伺服器。
這是我的嘗試,查看文件:
/usr/pgsql-12/bin/postgresql-12-setup initdb -D /mnt/disks/data-disk/pgdata systemctl: invalid option -- 'D' failed to find PGDATA setting in -D.service /usr/pgsql-12/bin/postgresql-12-setup initdb --pgdata=/mnt/disks/data-disk/pgdata systemctl: unrecognized option '--pgdata=/mnt/disks/data-disk/pgdata.service' failed to find PGDATA setting in --pgdata=/mnt/disks/data-disk/pgdata.service
過程中是否有一些錯誤?
更新: 正如@pifor 告訴我的那樣,我將 PATH 添加到 postgres bash_profile 中,然後開始辨識 PG_DATA。現在的問題是 initdb 旨在找到一個空文件夾,並且由於 pg_basebackup 而不是空的
物理備份(如 pg_basebackup)會生成一個已經初始化的目錄。您不執行 initdb。您只需啟動它,可能在以適合您情況的任何方式更改配置文件之後。
儘管您可能應該使用命名插槽將其配置為流式傳輸,否則在進行備份時它會落後,但這將是一個不同的問題。
為什麼不直接將驅動器陣列從一台伺服器移動到另一台伺服器?是否希望更改儲存硬體以及伺服器硬體?