背景
視訊回放 加入POLARDB社群1、failover:
自動進行
2、switchover:
主動切主指令,在leader上執行。
alter system dma change leader to '$HOST:$PGPORT';
3、核心常用指令
3.1、檢視資料庫角色,其中paxos role的值2表示leader,0表示follower,3表示learner。
select current_leader, paxos_role from polar_dma_member_status;
3.2、檢視叢集節點資訊,在leader上執行。
select * from polar_dma_cluster_status;
3.3、檢視follower延遲
3.3.1、leader節點檢視同步和回放延遲
select client_addr, application_name, write_lag, flush_lag, replay_lag from pg_stat_replication;
3.3.2、follower節點檢視回放延遲
select pg_last_wal_replay_lsn(), pg_last_wal_receive_lsn(), pg_last_xact_replay_timestamp();
3.4、切主操作相關
3.4.1、設定選舉逾時時間(需要重新開機執行個體)
polar_dma_election_timeout
3.4.2、設定follower延遲選舉選項(通過alter system直接修改)
polar_dma_delay_election = on 時,follower在polar_dma_delay_election_timeout時間内不主動發起選舉。
polar_dma_delay_election_timeout:延遲切主時間
3.4.3、主動切主指令,在leader上執行。
alter system dma change leader to '$HOST:$PGPORT';
3.4.4、自動發起選舉指令,在follower上執行。
alter system dma FORCE CHANGE LEADER;
3.4.5、節點權重修改,在leader上執行。越大權重越高. 設定0~9之間,0就是learner沒有選舉權了
alter system dma CHANGE NODE '$HOST:$PGPORT' WEIGHT TO 9;
3.5、日志手動管理
alter system dma purge logs;
alter system dma purge logs to xxx;
alter system dma force purge logs to xxx;
3.6、在leader上執行節點删除指令,或者通過cm執行删除指令
alter system dma drop follower '$HOST:$PGPORT';
3.7、增加節點, 比較複雜.
3.7.1、OS環境配置
3.7.2、polar軟體部署
3.7.3、建立從庫(basebackup)
通過polar_basebackup複制資料或者copy整個data目錄,建立follower節點。
polar_basebackup -h <master_ip> -p <master_port> -U replicator -D $PGDATA --polardata=$POLARDATA -X stream --progress --write-recovery-conf -v
3.7.4、初始化中繼資料
先配置為learner角色節點,之後再将節點加入叢集。
polar-postgres -D $PGDATA/ -c polar_dma_init_meta=ON -c polar_dma_learners_info="$HOST:$PGPORT"
3.7.5、配置dma
修改
$PGDATA/polar_dma.conf
配置檔案。修改其中的
polar_dma_repl_appname
參數。
polar_dma_repl_appname = 'standby_$HOST_$PGPORT' # $HOST用int32表示
如果
${POLARDATA}
路徑與leader不通,則在
$PGDATA/postgresql.conf
中修改。
polar_datadir='file-dio://${POLARDATA}'
3.7.6、啟動節點
和單機方式相同。第一次啟動成功後,将該節點加入DMA叢集;之後可直接啟動。
pg_ctl -D $PGDATA/ start
3.7.7、加入叢集
增加節點時,請在master節點使用cm指令
alter system dma add follower '$HOST:$PGPORT';
或
alter system dma add learner '$HOST:$PGPORT';