postgresql 提升主库的操作

前端之家收集整理的这篇文章主要介绍了postgresql 提升主库的操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_301_1@我们目前的postgresql是主从流复制模式,standby没有对外提供服务,只当做热备用。


@H_301_1@机器环境说明:

@H_301_1@ postgres版本 10


@H_301_1@切换前的拓扑关系:

@H_301_1@ master: 10.0.20.25

@H_301_1@ standby: 10.0.20.26



@H_301_1@操作前,先切换到 postgres 账号:


@H_301_1@10.0.20.25 停主库:

psql
selectpid,datname,usename,client_addr,client_port,application_namefrompg_stat_activity;--查看当前连接

然后,通知SA将当前主库从SLB上剔除掉,阻止用户新的连接进来。

selectpg_terminate_backend(pid)frompg_stat_activitywhereusename='admin';--杀死admin账户的当前连接(我这里业务账号用的是admin)

/usr/pgsql-10/bin/pg_ctlstop-mfast-D/var/lib/pgsql/10/data/--关闭当前master节点的pgsql进程


@H_301_1@10.0.20.26 激活成为新主库 :

/usr/pgsql-10/bin/pg_ctlpromote-D/var/lib/pgsql/10/data/

@H_301_1@

@H_301_1@10.0.20.26 检查 新主库是否提升成功:

@H_301_1@

/usr/pgsql-10/bin/pg_controldata-D/var/lib/pgsql/10/data/|grepcluster

Database cluster state: in production -- 说明: 如果值为 "in production" 说明是主库,如果值为 "in archive recovery" 说明是备库。



@H_301_1@在 10.0.20.26 上创建一个测试表,用于稍后验证新的复制是否正常

@H_301_1@

createtabletest_t1(aint);
insertintotest_t1select100;
select*fromtest_t1;

@H_301_1@


@H_301_1@10.0.20.25 使用pg_rewind 变成新的从库:

@H_301_1@

/usr/pgsql-10/bin/pg_rewind--target-pgdata/var/lib/pgsql/10/data/--source-server='host=10.0.20.26port=5432user=postgresdbname=postgrespassword=postgres'-P

-- 说明: 这里10.0.20.26上的postgres用户的密码是postgres,需要根据自己的情况来写pg_rewind的情况


@H_301_1@10.0.20.25 上查看postgresql.conf 有几个地方要进行修改

@H_301_1@

max_connections=200#一般查多于写的应用从库的最大连接数要比较大
hot_standby=on#说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay=30s#数据流备份的最大延迟时间
wal_receiver_status_interval=10s#多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_Feedback=on#如果有错误的数据复制,是否向主进行反馈


@H_301_1@

@H_301_1@10.0.20.25 上编写 recovery.conf 文件 内容如下:

@H_301_1@

recovery_target_timeline='latest'
standby_mode=on
primary_conninfo='host=10.0.20.26port=5432user=replicapassword=replica'


@H_301_1@

@H_301_1@10.0.20.25 新的从库上启动pgsql

/usr/pgsql-10/bin/pg_ctlstart-D/var/lib/pgsql/10/data/


@H_301_1@10.0.20.26 新的主库执行:

@H_301_1@

\x
select*frompg_stat_replication;


@H_301_1@10.0.20.26 新的主库执行插入操作:

@H_301_1@

insertintotest_t1select1;
select*fromtest_t1;


@H_301_1@然后,在主库、从库 查询复制状态:

selecttxid_current_snapshot();
原文链接:https://www.f2er.com/postgresql/193136.html

猜你在找的Postgre SQL相关文章