admin管理员组文章数量:1666732
作者:瀚高PG实验室(Highgo PG Lab)-天蝎座
流复制切换方式两种:
通过创建触发文件方式触发主备切换
通过pg_ctl promot命令手动触发主备切换
判断主备角色的五种方法:
-
查看操作系统WAL进程 ps -ef |grep wal |grep -v grep
wal sender process 表示该库为主库。wal receiver process 表示该库为备库。 -
查看数据库WAL进程 select pid,usename,application_name,client_addr,state,sync_state from pg_stat_replication;
-
通过系统函数查看 select pg_is_in_recovery();
f表示主库,t表示备库。 -
查看数据库控制信息 pg_controldata |grep "Database cluster state"
in production 表示主库。 in archive recovery 表示备库。 -
通过recovery.conf配置文件查看 检查$PGDATA目录下是否存在recovery.conf
存在recovery.conf文件为备库。
触发器文件主备切换步骤:
-
配置备库revocery.conf文件 trigger_file参数,设置激活备库的触发文件路径和名称
-
关闭主库,建议使用-m fast模式关闭
-
在备库上创建触发文件激活备库,如果recovery.conf变成recovery.done表示备库已经切换成主库
-
将原主库切换为备库,启动数据库,检查进程
备库recovery.conf
recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=192.168.80.126 port=5432 user=postgres'
trigger_file='/data/pg10/.postgres.trigger.5432'
pg_ctl promot主备切换步骤:
pg_ctl promot -D datadir
pg_rewind是流复制维护时一个非常好的数据同步工具,用于在未关闭原主库便将备库提升为主库的情况下,将原主库恢复为备库。
pg_rewind并非全量从主库同步数据,只是复制变化的数据。
使用pg_rewind的前提条件为以下之一:
-
wal_log_hints参数设置为on
-
数据库initdb时使用了 --data-checksums选项,打开这个选项开启后会在数据块上进行检测以发现I/O错误,开启后性能有损失。
具体步骤:
-
激活备库: pg_ctl promote
-
将主库关闭,使用pg_rewind工具增量同步原备库上的数据到原主库:
-
pg_rewind --target-pgdata $PGDATA --source-server='host=102.168.80.127 port=5432 user=postgres dbname=postgres' -P
-
将recovery.done重命名为recovery.conf
-
启动数据库pg_ctl start
本文标签:
版权声明:本文标题:流复制浅析 —— 主备切换 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1730076473a1221840.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论