背景
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';