PostgreSQL主从切换实例测试分析
这篇文章主要介绍“PostgreSQL主从切换实例测试分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PostgreSQL主从切换实例测试分析”文章能帮助大家解决问题。
成都创新互联公司是专业的兴山网站建设公司,兴山接单;提供成都网站制作、成都网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行兴山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
说明
在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主备就切换完成了!
关于“PostgreSQL主从切换实例测试分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。
文章名称:PostgreSQL主从切换实例测试分析
新闻来源:http://myzitong.com/article/iisjce.html