postgresql主从切换

postgresql主从切换测试步骤:

1. 在master机器上执行

pg_controldata /data/pg_data/data/ |grep -i ‘database cluster state’
Database cluster state: in production

2. 在slave机器上执行

pg_controldata /data/pg_data/data/ |grep -i ‘database cluster state’
Database cluster state: in archive recovery

3.将只读节点提升为主节点

sudo -u postgres ./pg_ctl promote -D /data/pg_data/data/
waiting for server to promote… done
server promoted

select * from pg_stat_replication;

  • recovery.conf文件将会被改成recovery.done
  • 将丢失主从状态,变成两个独立的单点
4.在slave机器上执行,发现从库已经被提升为主库

pg_controldata /data/pg_data/data/ |grep -i ‘database cluster state’
Database cluster state: in production

5.将原来master转变成从节点

1)创建recovery.conf配置文件
standby_mode = ‘on’
primary_conninfo = ‘user=postgres password=123456 host=172.16.0.103 port=5432 sslmode=disable sslcompression=0 target_session_attrs=any’
recovery_target_timeline=‘latest’

2)授权
chown postgres. recovery.conf

3)检查原主库的时间线是否超前
##target server must be shut down cleanly
sudo -u postgres /usr/local/pgsql/bin/pg_rewind --target-pgdata=/data/pg_data/data --source-server=‘host=172.16.0.103 port=5432 user=postgres password=123456’
source and target cluster are on the same timeline
no rewind required

4)启动从库服务
sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /data/pg_data/data -l /data/pg_data/log/pg.log start

遇到问题

1)权限不够,从库添加了recovery.conf文件权限是root,需要修改用户权限为postgres
FATAL: terminating connection due to administrator command

2)原主库时间线超前于从库
DETAIL: End of WAL reached on timeline 1 at 0/301E510.
LOG: new timeline 2 forked off current database system timeline 1 before current recovery point 0/301E580

3)使用pg_rewind必须开启相关参数,可以选择开启wal_log_hints或者选择开启data_checksums。data_checksums只能在数据库初始化的时候设置,后续数据库服务建立后是无法修改的。
target server needs to use either data checksums or “wal_log_hints = on”

  • wal_log_hints:能够记录特定提示位的变化。默认为off,静态参数,修改需要重启服务
  • data_checksums:数据校验,保证从redo buffe写入redo file里面的数据是一直的,读取 的时候也会根据每个redo page的checksum检查redo page的内容是否正确。默认off,动态参数。开启checksum会增加CPU的消耗,但是开销并不是很大,对比不开启情况下增加CPU消耗不超过1%。因此,开启checksum,实际引入的开销并不大。
  • full_page_writes:默认是开启
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostgreSQL是一种可扩展的开源数据库管理系统,支持主从复制机制来实现高可用性。主从复制是通过复制主数据库的数据和操作日志到从数据库来建立备份数据库,实现故障转移和读写分离的机制。 主数据库负责处理所有的写操作,并将其更新记录到日志文件中。从数据库则从主数据库读取日志文件并应用到自己的数据库中,从而保持与主数据库的数据一致性。主数据库发生故障时,可以快速切换到从数据库,从而实现高可用性。 PostgreSQL主从复制机制提供了以下几个优势: 1. 故障容错能力:当主数据库发生故障时,从数据库可以迅速接管主数据库的功能,继续提供服务,避免了停机时间。 2. 负载均衡和读写分离:通过将读取请求分发到多个从数据库,可以有效减轻主数据库的压力,提高数据库的整体性能。 3. 数据备份和灾难恢复:通过主从复制,从数据库可以作为主数据库的备份,可以在主数据库出现灾难性故障时快速恢复数据。 4. 数据局部性和地理分布:通过将从数据库部署到不同的地理位置,可以将数据就近存储,提高访问速度。 5. 提高系统的可靠性和稳定性:通过在不同的物理服务器上部署主从数据库,可以保证即使某个服务器发生故障,数据库系统仍然可用。 总而言之,PostgreSQL主从复制机制提供了高可用性和容错能力,使得企业可以更好地管理和保护其数据库系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值