/*
在資料庫變得比較大時, 例如上tb, 如果部署了postgresql primary-standby 流複製或者log shipping ha.
當發生了failover, old primary節點可能因為某些原因需要重新同步資料.
在廣域網上, 由於網路異常也可能造成standby節點落後主節點, 導致需要重新同步資料.
小資料庫重新同步資料很方便, 全量或者使用rsync增量同步都可以.
但是資料庫很大的情況下, rsync也會變得非常慢, 而且大量消耗主機io資源.
postgresql 社群有提議在核心中加入通過wal檔案解析, 達到增量同步到目的
*/--配置9.5版本的主從環境
--在pg的9.5版本中 checkpoint_segments引數已經被移除
--max_wal_size 換算大小 ,
--max_wal_size = (3 * checkpoint_segments) * 16mb
max_wal_size = 1gb
--pg_rewind 前提條件
1. full_page_writes
2. wal_log_hints 設定成 on 或者 pg 在初始化時開啟 checksums 功能
--檢視從庫的配置恢復檔案
[postgres@rudy_01 5430]$ grep ^[a-z] recovery.conf
standby_mode = on
recovery_target_timeline = 'latest'
primary_conninfo = 'host=rudy_01 port=5431 user=repuser'
trigger_file = '/usr/local/postgresql/9.5/5430/postgresql.trigger.5430'
--啟動備庫為主庫
touch /usr/local/postgresql/9.5/5430/postgresql.trigger.5430
--在原來的備機點上插入測試資料
create table test_2(id int4);
insert into test_2(id) select n from generate_series(1,10000) n;
--在主機點上停止原主機點資料庫
[postgres@rudy_01 5430]$ pg_controldata | grep cluster
database cluster state: in production
[postgres@rudy_01 5430]$ pg_ctl stop -m fast -d $pgdata
waiting for server to shut down.....
server stopped
--備註:停完原主庫後,千萬不能立即以備節點形式拉起老庫,否則在執行 pg_rewind 時會報,"target server must be shut down cleanly" 錯誤
-- 如果有如下錯誤
target server needs to use either data checksums or "wal_log_hints = on"
--備註:資料庫在 initdb 時需要開啟 checksums 或者設定 "wal_log_hints = on"
--注意要備份好原來主庫的配置檔案,因為pg_rewind會把配置檔案也同步過來覆蓋原來的配置檔案
cp pg_hba.conf pg_hba.bak
cp postgresql.conf postgresql.bak
--在原主庫上執行pg_rewind上操作
--千萬注意,如要在原主庫關閉之前,又對資料庫進行了增刪查改,它們會對覆蓋
pg_rewind --target-pgdata $pgdata --source-server='host=rudy_01 port=5430 user=postgres dbname=postgres password=123456' -p
connected to server
servers diverged at wal position 0/9decbc0 on timeline 2
rewinding from last common checkpoint at 0/6000138 on timeline 2
reading source file list
reading target file list
reading wal in target
need to copy 196 mb (total source directory size is 213 mb)
201117/201117 kb (100%) copied
creating backup label and updating control file
done!
--在原來的主庫上建立複製配置檔案
cat recovery.conf
standby_mode = on
recovery_target_timeline = 'latest'
primary_conninfo = 'host=rudy_01 port=5430 user=repuser'
trigger_file = '/usr/local/postgresql/9.5/5431/postgresql.trigger.5431'
--啟動原主庫做備庫使用
pg_ctl start -d $pgdata
innobackupex備份(全備 增量備)與恢復
安裝教程請檢視這篇文章 innobackupex備份選項 user 指定資料庫備份使用者 password 指定資料庫備份使用者密碼 port 指定資料庫埠 host 指定備份主機 socket 指定socket檔案路徑 databases 備份指定資料庫,多個空格隔開,如 databases db...
gitlab主備同步 gitlab主備同步
主 10.10.10.75 備 10.10.10.16 方案思路 mysql主從同步 gitlab檔案目錄同步 inotify rsync 一,配置mysql主從同步 mysql版本 5.5.43 修改75的mysql配置檔案 vim etc mysql my.cnf server id 1 bin...
mysql增量備份幾種 mysql的增量備份
一 啟用 binary log 修改 mysql server 的系統設定檔案 eg.etc my.cnf 在 mysqld 區塊中加上 log bin mysql bin 選項,然後重新啟動 mysql server,例如 mysqld log bin 啟用後你應該可以在 mysql 的 data...