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 服務例項,...