首页 > 数据库 >PostgreSQL主从切换测试

PostgreSQL主从切换测试

时间:2022-09-29 12:06:48浏览次数:49  
标签:11 PostgreSQL postgres lsn lei pg data 主从 切换


说明

在PostgreSQL(HOT-Standby)如主库出现异常。备库如何激活;来替换主库工作。有下列2种方式

备库在recovery.conf文件中有个配置项trigger_file。它是激活standby的触发文件。当它存在;就会激活standby。
使用pg_ctl promote来激活。

演示

模拟演示主库异常关机,将备库切换为主库,然后原主库修复后切换为新的备库继续工作。

环境说明

主机名

IP地址

角色

数据目录

master

192.168.20.133

主库

/var/lib/pgsql/11/data

slave

192.168.20.134

备库

/var/lib/pgsql/11/data

查看当前环境状态

主库

lei=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 3274
usesysid | 16774
usename | repuser
application_name | walreceiver
client_addr | 192.168.20.134
client_hostname | slave
client_port | 49896
backend_start | 2019-05-30 02:40:58.253032-04
backend_xmin |
state | streaming
sent_lsn | 0/180003C8
write_lsn | 0/180003C8
flush_lsn | 0/180003C8
replay_lsn | 0/180003C8
write_lag |
flush_lag |
replay_lag |
sync_priority | 0
sync_state | async

主库关闭

[root@master data]# systemctl stop postgresql-11

激活备库

作为新主库运行,删除数据库lei中表test并创建表tt

[postgres@slave ~]$ pg_ctl -D /var/lib/pgsql/11/data/ promote
waiting for server to promote.... done
server promoted

删除表test,创建表tt

[postgres@slave ~]$ psql lei;
psql (11.3)
Type "help" for help.

lei=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | lei | table | postgres
public | t | table | postgres
public | test | table | postgres
(3 rows)

lei=# drop table test;
DROP TABLE
lei=# create table tt(id int);
CREATE TABLE

手动切换几次WAL日志

lei=# select pg_switch_wal();
pg_switch_wal
---------------
0/19019058
(1 row)

lei=# select pg_switch_wal();
pg_switch_wal
---------------
0/1A000078
(1 row)

lei=# select pg_switch_wal();
pg_switch_wal
---------------
0/1B000000
(1 row)

恢复原主库

用pg_rewind命令同步新备库

[postgres@master ~]$ pg_rewind --target-pgdata /var/lib/pgsql/11/data/ --source-server='host=slave port=5432 user=postgres dbname=postgres' -P
connected to server
servers diverged at WAL location 0/19000098 on timeline 3
rewinding from last common checkpoint at 0/19000028 on timeline 3
reading source file list
reading target file list
reading WAL in target
need to copy 133 MB (total source directory size is 165 MB)
136230/136230 kB (100%) copied
creating backup label and updating control file
syncing target data directory
Done!

修改recovery.conf文件
由于配置是同步过来的,所以需要修改一下配置​​​primary_conninfo​

[postgres@master ~]$ mv /var/lib/pgsql/11/data/recovery.done /var/lib/pgsql/11/data/recovery.conf
[postgres@master ~]$ vi /var/lib/pgsql/11/data/recovery.conf
primary_conninfo = 'host=slave port=5432 user=replica password=replica'

启动新备库

[root@master data]# systemctl start postgresql-11

查看数据是否同步过来
可以看到表test没有了,多了tt表

postgres=# \c lei;
You are now connected to database "lei" as user "postgres".
lei=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | lei | table | postgres
public | t | table | postgres
public | tt | table | postgres
(3 rows)

主库查看进程状态

lei=# \x
Expanded display is on.
lei=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid | 8625
usesysid | 16774
usename | repuser
application_name | walreceiver
client_addr | 192.168.20.133
client_hostname | master
client_port | 55306
backend_start | 2019-05-30 03:26:14.645623-04
backend_xmin |
state | streaming
sent_lsn | 0/1E0000D0
write_lsn | 0/1E0000D0
flush_lsn | 0/1E0000D0
replay_lsn | 0/1E0000D0
write_lag | 00:00:00.001552
flush_lag | 00:00:00.002167
replay_lag | 00:00:00.002169
sync_priority | 0
sync_state | async

如果有异常信息,请查看数据库日志来定位问题,通常问题都是出现在几个配置文件中。

  • pg_hba.conf
  • postgresql.conf
  • recovery.conf

至此PG主备就切换完成了!


标签:11,PostgreSQL,postgres,lsn,lei,pg,data,主从,切换
From: https://blog.51cto.com/u_12946336/5722427

相关文章

  • PostgreSQL主从搭建
    主备环境说明主机名IP角色端口master192.168.20.133Master5432slave192.168.20.134Slave5432创建流复制首先在主备服务器上安装好PG数据库,具体安装方法这里不再介绍。配置ho......
  • Postgresql基于Linux各种安装方法
    说明目前PostGreSQL最新版本为11.3,​​9.3及之前版本​​以不再受官方支持.从RHEL/CentOS/SL/OL6开始都自带PG数据库,下表是不同的操作系统版本对应的数据库版本:操作系统版......
  • Docker基础知识 (13) - 部署 MariaDB 集群 (一) | 主从复制
    MariaDB数据库是MySQL的一个分支,主要由开源社区维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方......
  • WPF 切换主题使用 luna 复古版本
    本文告诉大家如何在WPF里面使用luna等复古主题今天在lsj说他准备优化WPF的程序集时,准备删除luna等程序集时,找到了一段有趣的注释,发现在WPF里面可以通过一些有......
  • vue动态组件tab切换
     先弄3个tab组件,再导入 可以使用<component:is="activetab">那个,也可以使用下面注释的那个,二选一    选择TabA       第二部分如何切换之......
  • mysql主从搭建
    mysql主从搭建环境:ubuntu20.04.1,mysql:8.0.22。主:192.168.87.3备:192.168.87.6安装数据库sudoapt-getinstallmysql-serversudoapt-getinstallmysql-clientsud......
  • postgresql主从复制
    PG主备流复制的核心部分由walsender,walreceiver和startup三个进程组成。yuminstallhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-re......
  • myql 切换主从
    #手动切换1、主库锁库,禁止写入mysql>setglobalsuper_read_only=ON;mysql>setglobalread_only=1;或者setglobalread_only=ON;mysql>flushtableswithre......
  • postgresql uuid模糊搜索 uuid string 类型转换 SQL Error [42883] explicit type cas
    问题描述在postgresql的使用过程中,你可能有以下几种需求:要对uuid类型的列进行过滤,但是需要手动输入整个uuid太麻烦容易出错,如果uuid列也能像字符串一样模糊匹配就......
  • django项目 admin管理后台 基本操作(表注册/中英文切换/表名展示为中文)
    登录:使用创建的超级用户才可以登录注册:告诉admin有多少张表:在admin.py文件中注册admin.py文件:表注册完成后,admin中会显示表信息1fromdjango.contribimportadmin......