postgresql 数据库 主从切换 测试


文章目录

  • postgresql 数据库 主从切换 测试
  • 前言
  • 环境:
  • 主从切换
  • 1. 查看数据库状态:
  • 2. 备库切换主库
  • 3. 旧主库切换成备库;
  • 4 查看状态
  • 后记


前言

因数据库等保需要,需要对老系统的数据库进行主从切换来确保数据库的稳定性与安全性。

环境:

数据库版本:postgresql 11.5

pg数据库主从部署:
pg11.5主从部署:

主从切换

1. 查看数据库状态:

1.1 查看数据库状态

/usr/pgsql-11/bin/pg_controldata -D /u01/apps/pgsql/data/

主库:

postgressql切换账户 pgsql切换数据库_服务器

从库:

postgressql切换账户 pgsql切换数据库_服务器_02

1.2 查看数据库主从

select pg_is_in_recovery();

t : t标示备库
F : f标识主库

postgressql切换账户 pgsql切换数据库_数据库_03

在主库中查询:
select * FROM pg_stat_replication ;

postgressql切换账户 pgsql切换数据库_postgressql切换账户_04

2. 备库切换主库

2.1 停止主库

/usr/pgsql-11/bin/pg_ctl -D /u01/apps/pgsql/data/ stop
systemctl stop postgresql-11
-bash-4.2$ /usr/pgsql-11/bin/pg_ctl -D /u01/apps/pgsql/data/ stop
等待服务器进程关闭 .... 完成
服务器进程已经关闭

postgressql切换账户 pgsql切换数据库_数据库_05

2.2 查看备库状态

查看备库状态:
一定要备库是在正在归档恢复中

postgressql切换账户 pgsql切换数据库_数据库_06

2.3 修改备库参数

进入数据库目录下 ,修改recovery.conf 文件

mv recovery.conf recovery.done
[root@localhost data]# mv recovery.conf recovery.done

修改前:

postgressql切换账户 pgsql切换数据库_数据库_07


修改后:

postgressql切换账户 pgsql切换数据库_sql_08

修改 pg_hba.conf文件

添加主库ip地址到pg_hba.conf文件。

postgressql切换账户 pgsql切换数据库_数据库_09

2.4 重启备库

/usr/pgsql-11/bin/pg_ctl -D /u01/apps/pgsql/data/ stop
/usr/pgsql-11/bin/pg_ctl -D /u01/apps/pgsql/data/ start

再次查看备库状态;

postgressql切换账户 pgsql切换数据库_sql_10


现在备库已经成为了新的主库。

3. 旧主库切换成备库;

3.1 查看数据库状态:

现在数据库状态应该是关闭的。

3.2 修改参数文件
进入 数据库目录下,修改pg_hba.conf文件 ,跟备库的一致,添加旧主库IP(就是本机数据库ip)。

添加 recovery.conf 文件1

vim recovery.conf

内容如下:

standby_mode    ='on'
primary_conninfo        ='host = 10.10.3.12 port = 5432 user = replication password = replication'
trigger_file = '/tmp/pgsql_master'

host为新的主库ip地址,port 为新的主库的端口 user为主备传输用户

文件赋权

chown -R  postgres:postgres recovery.conf

注意: 现在主从库的pg_hba.conf文件上都应该有现在从库的ip地址!!!!!!!!

3.3 启动从库

/usr/pgsql-11/bin/pg_ctl -D /u01/apps/pgsql/data/ start

4 查看状态

  1. 在新的主库上查看:

select * FROM pg_stat_replication ;
查看是否有数据。

  1. 在主从库中执行select pg_is_in_recovery();是否为主从。
  2. 在主库上创建新表,在从库上查看是否同步

以上都没有问题,就表示主从切换成功了。如果要切换回去,也是上面的操作。