设为首页 加入收藏

TOP

pgsql主备搭建及切换(六)
2019-09-03 03:38:15 】 浏览:99
Tags:pgsql 搭建 切换
g_stat_wal_receiver显示wal发送进程的详细信息

主要字段信息

pid:WAL接收进程的进程号。

status:WAL接收进程的状态。

Receive_start_lsn:WAL接收进程启动后使用的第一个WAL日志位置。

Received_lsn:最近接收井写人WAL日志文件的WAL位置。

last_msg_send_time:备库接收到发送进程最后一个消息后,向主库发回确认消息的发送时间。

last_msg_receipt_time:备库接收到发送进程最后一个消息的接收时间。

conninfo:WAL接收进程使用的连接串,连接信息由备库$PGDATA目录的recovery.conf配置文件的primary_conninfo参数配置。

三、流复制主备切换

3.1判断主备角色
方式一:ps -ef|grep wal 查看wal进程描述信息,判断主备

方式二: 主库查询SELECT  *  from  pg_stat_replication,备库查此视图是无记录的; 备库查询select  *  from  pg_stat_wal_receiver,同主库查此视图无记录。

方式三:SELECT pg_is_in_recovery(); 返回t说明为备库,返回f为主库。

方式四:通过pg_controldata查看数据库控制信息;通过Database cluster state信息判断;结果显示 in production 为主库;结果显示 in archive recovery为备库。

方式五:通过recover.conf配置文件查看。

 

3.2 判断主备是否正常

(1) 查看主备库的进程

主库发送进程:

[pgsql@pgsql ~]$ ps -ef|grep wal

pgsql     35001  34996  0 22:27 ?        00:00:00 postgres: wal writer process

pgsql     35006  34996  0 22:27 ?        00:00:00 postgres: wal sender process repuser 192.168.231.132(55152) streaming 0/7000098

pgsql     35008  34790  0 22:27 pts/1    00:00:00 grep --color=auto wal

备库为接收进程:

[pgsql@pgstandby ~]$ ps -ef|grep wal

pgsql     59336  59310  1 22:27 ?        00:00:00 postgres: wal receiver process   streaming 0/70000D0

pgsql     59347  58742  0 22:27 pts/3    00:00:00 grep --color=auto wal

(2) 主库插入数据,观察备库是否能收到数据。

(3) 主库查询复制状态参数,是否正常。

[pgsql@pgsql pg_root]$ psql postgres

psql (10.9)

Type "help" for help.

 

postgres=# select usename,application_name ,client_addr ,sync_state from pg_stat_replication;

 usename | application_name |   client_addr   | sync_state

---------+------------------+-----------------+------------

 repuser | node2            | 192.168.231.132 | sync

(1 row)

 

3.3切换方式

通过触发器文件方式触发主备切换和通过pg_ctl promot命令触发主备切换

一、 文件触发方式

1)  配置备库recovery.conf 文件的tigger_file参数,设置激活备库的触发文件路径和名称。添加tigger_file参数。

trigger_file = ‘/database/pg10/pg_root/.postgresql.trigger.5432’

2)  关闭主库,使用 -m fast 模式关闭。(数据库关闭时首先做一次checkpoint,wal进程会将截止此次checkpoint的wal日志流发送给备库,备库在应用wal。)

3)  在备库创建触发文件激活备库,当recovery.conf变为recovery.done表示备库已切换为主库。

[pgsql@pgstandby ~]$ cat /database/pg10/pg_root/recovery.conf |grep ^[^#]

recovery_target_timeline = 'latest'

standby_mode = on

primary_conninfo='host=192.168.231.131 port=5432 user=repuser application_name=node2'

trigger_file='/database/pg10/pg_root/.postgresql.trigger.5432'

[pgsql@pgstandby ~]$ touch /database/pg10/pg_root/.postgresql.trigger.5432   --创建触发文件,检测不到主库后会自动切换为主库。

4)  在老主库下创建recovery.conf文件,并配置相应参数,跟备库的参数一样。在根目录下配置.pgpass免密文件。

 

[pgsql@pgstandby ~]$ vi /database/pg10/pg_root/recovery.conf     --主要依据原来备库的recovery.conf参数来进行设置。

recovery_target_timeline = 'latest'             &

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Navicat Premium12.0 常用快捷键 下一篇文件被占用导致Hive Load文件不成..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目