Postgres 主從配置(四)

2022-04-11 06:31:57 字數 1951 閱讀 4550

postgres 主從切換

資料庫主從結構中由從庫公升級為主庫較為容易些,但是主庫恢復後重新加入到主從結構中就不那麼容易了。

以往的做法是當成乙個全新的從庫加入進來,資料需要重新從現有的主庫中使用pg_backup全部拉取過來,資料量少時還可以接受,如果資料量過大對現有系統的影響很大,

而且也非常耗時。與全量拉取資料比較,其實在本地已經存在大部分的資料內容,用沒有方法使用增量的方式呢?充分利用已有資料。類似於rsync

pg_rewind 會將目標庫的資料檔案,配置檔案複製到本地目錄,由於 pg_rewind 不會讀取所有未發生變化的資料塊,所以速度比重做備庫要快很多。

環境db1 10.1.88.47 主庫

db2 10.1.88.46 從庫

--pg_rewind 前提條件

1 full_page_writes

2 wal_log_hints 設定成 on 或者 pg 在初始化時開啟 checksums 功能

需要重新啟動postgres

從庫切換為主庫 db2為新的主庫

$pg_ctl promote -d $pgdata

server promoting

在db2上建立新錶並插入資料

$psql

psql (9.5alpha1)

type "help" for help.

postgres=# create table test_2(id int4);

create table

postgres=# insert into test_2(id) select n from generate_series(1,10000) n;

insert 0 10000

停主庫

$pg_ctl stop -m fast -d $pgdata

waiting for server to shut down....... done

server stopped

備註:停完原主庫後,千萬不能立即以備節點形式拉起老庫,否則在執行 pg_rewind 時會報,"target server must be shut down cleanly" 錯誤。

使用pg_rewind差分同步資料

$/usr/pgsql-9.6/bin/pg_rewind --target-pgdata /var/lib/pgsql/9.6/data/ --source-server='host=10.1.88.46 port=5432 user=postgres dbname=postgres password=postgres' -p

connected to server

servers diverged at wal position 0/b8003138 on timeline 2

rewinding from last common checkpoint at 0/b8002118 on timeline 2

reading source file list

reading target file list

reading wal in target

need to copy 77 mb (total source directory size is 10139 mb)

79071/79071 kb (100%) copied

creating backup label and updating control file

syncing target data directory

done!

pg_rewind 成功

修改recovery.conf 檔案 啟動資料庫

$pg_ctl start -d $pgdata

驗證資料

postgres=# select count(1) from test_2;

count

-------

10000

(1 row)

Postgres遠端訪問配置

在伺服器上安裝了postgres資料庫,然後通過客戶端工具pgadminiii來遠端訪問的過程中發現提醒伺服器沒有啟動監聽的錯誤。解決方法如下 e.g type database user cidr address method ipv4 local connections host all all...

配置主從機

此次我的turtlebot2上網本為主機,工作站為叢機 1,配置工作站ip位址 export ros ip 工作站的ip 2,配置 turtlebot2ip 位址export ros master uri http turtlebot2ip 11311 export ros ip turtlebot...

Redis主從配置

redis主從配置 進入正題,這篇會將redis以 windows10服務形式提供服務 搭建乙個簡單的主從複製 m 6379 s 6380 6381 redis 我這裡使用的是 redis3.2.100.zip 解壓後如下圖 直接雙擊redis server.exe即啟動乙個 redis 服務例項,...