前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >postgresql 提升主库的操作

postgresql 提升主库的操作

作者头像
保持热爱奔赴山海
发布2019-09-17 14:04:13
1.3K0
发布2019-09-17 14:04:13
举报
文章被收录于专栏:数据库相关

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

机器环境说明:

  postgres版本 10

切换前的拓扑关系:

  master: 10.0.20.25

  standby: 10.0.20.26

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

10.0.20.25 停主库: 

代码语言:javascript
复制
psql 
select pid,datname,usename,client_addr,client_port, application_name from pg_stat_activity;  -- 查看当前连接

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

select pg_terminate_backend(pid) from pg_stat_activity where usename='admin' ;  -- 杀死admin账户的当前连接(我这里业务账号用的是admin)

/usr/pgsql-10/bin/pg_ctl stop -m fast -D /var/lib/pgsql/10/data/    -- 关闭当前master节点的pgsql进程

10.0.20.26 激活成为新主库 :

代码语言:javascript
复制
/usr/pgsql-10/bin/pg_ctl promote -D /var/lib/pgsql/10/data/

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

代码语言:javascript
复制
/usr/pgsql-10/bin/pg_controldata  -D /var/lib/pgsql/10/data/ | grep cluster

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

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

代码语言:javascript
复制
create table test_t1(a int );
insert into test_t1 select 100;
select  * from test_t1;

10.0.20.25 使用pg_rewind 变成新的从库:

代码语言:javascript
复制
/usr/pgsql-10/bin/pg_rewind --target-pgdata  /var/lib/pgsql/10/data/  --source-server='host=10.0.20.26 port=5432 user=postgres dbname=postgres password=postgres' -P

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

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

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

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

代码语言:javascript
复制
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=10.0.20.26 port=5432 user=replica password=replica'

10.0.20.25 新的从库上启动pgsql

代码语言:javascript
复制
/usr/pgsql-10/bin/pg_ctl start -D /var/lib/pgsql/10/data/

10.0.20.26 新的主库执行:

代码语言:javascript
复制
\x 
select * from pg_stat_replication;

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

代码语言:javascript
复制
insert into test_t1 select 1;
select  * from test_t1;

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

代码语言:javascript
复制
select txid_current_snapshot();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/04/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档