当前位置:   article > 正文

postresql同步流复制_postgresql同步流复制

postgresql同步流复制

目录

引言

异步流复制部署

同步流复制部署

同步流复制应用

主库参数配置

 备注


引言

1. 同步流复制:在同步流复制中,事务提交时会等待WAL记录被复制到指定数量的同步备机上。这样可以确保在同步从库发生故障时,事务的持久性得到保证。同步流复制可以通过设置synchronous_standby_names,synchronous_commit参数来配置。可以使用优先级或仲裁方式来选择同步备机。同步流复制会增加事务的响应时间和并发争用,因此需要谨慎使用以确保应用程序的性能。

2. 异步流复制:在异步流复制中,事务提交后,不需要等待WAL记录被复制到备机上。这样可以提高小事务的吞吐量,但也增加了数据丢失的风险。异步流复制适用于不需要强一致性保证的场景,如事件日志记录。

同步流复制和异步流复制的选择取决于应用程序对事务持久性和性能的要求。同步流复制提供了强一致性保证,但会增加事务的响应时间和并发争用。异步流复制提供了更高的吞吐量,但可能会导致数据丢失。

异步流复制部署

http://t.csdn.cn/mbgIB

同步流复制部署

同步复制的配置主要是在主库上配置参数 “synchronous_standby_names” ,该参数指定
多个Standby的名称        

影响同步复制的还有一个参数“synchronous_commit”,该参数可以取的值有以下几个

·remote_apply:WAL日志被传到备库并被apply,事务commit才返回。
·on:WAL日志被传到备库并被持久化(不必等其被apply),事务commit才返回。
·remote_write:WAL日志被传到备库的内存中(不必等其被持久化),事务commit才
返回。
·local:WAL日志被本地持久化后(不用管远程)事务commit就可以返回。
·off:不必等WAL日志被本地持久化,也不管是否传到远程,事务commit都可以立即
返回。
由上面说明即可联想到同步复制,        的可选值为“on”“remote_apply”
“remote_write”。

同步流复制应用

生产中为了保证数据安装,现在我需要配置一个集群,当预先的同步从库宕机了,另外的从库能迅速升级为同步从库,而保证数据的正常写入,使其生产运行不受影响。 

IP地址        数据库级别端口号路径数据库名
10.0.0.200主库15432/home/postgres/pgdata/datapostgres
10.0.0.199潜在从库15432/home/postgres/standby1postgres
10.0.0.198从库15432/home/postgres/standby2postgrs

主库参数配置

在主库中打开监听和IP白名单

max_wal_senders = 10
wal_level =  replica  或者使用logcial

min_wal_size=800MB
hot_standby = off  默认情况下是“off”   在从库启动后还会再次做介绍

synchronous_standby_names = 'standby1,standby1'

synchronous_commit = on

这里的0.0.0.0/0  允许所有访问数据库

创建具有replication的用户

create  user r1 with replication;

修改完以上参数后需要重新启动主库;

分别在两个从库执行备份
10.0.0.198主机

  1. pg_basebackup -h 10.0.0.200 -U r1 -F p -P -X stream -R -D standby2/ -p 15432

10.0.0.199主机

pg_basebackup -h 10.0.0.200 -U r1 -F p -P -X stream -R -D standby1/ -p 15432

- -h:指定要连接的服务器的主机名或IP地址。
- -U:指定连接使用的用户名。
- -Fp:指定备份的格式。在这种情况下,备份以纯文本格式存储。
- -P:指定在备份过程中显示进度信息。
- -X stream:指定备份的流式传输方法。
- -R:指定包括所有必需的WAL文件以进行一致性备份。
- -D:指定备份存储的目录。

分别修改两个从库的参数/home/postgres/standby1/postgresql.auto.conf  增加application_name = standby1

/home/postgres/standby2/postgresql.auto.conf  增加application_name = standby2

 分别启动从库

  1. pg_ctl -D /home/postgres/standby1 start
  2. pg_ctl -D /home/postgres/standby2 start

此时在主库使用视图pg_stat_replication 可以查看到两个从库的状态

  1. postgres=# select * from pg_stat_replication;
  2. -[ RECORD 1 ]----+------------------------------
  3. pid | 1551
  4. usesysid | 35849
  5. usename | r1
  6. application_name | standby2
  7. client_addr | 10.0.0.198
  8. client_hostname |
  9. client_port | 54230
  10. backend_start | 2023-07-16 03:36:05.049714+08
  11. backend_xmin |
  12. state | streaming
  13. sent_lsn | 0/2F0001C0
  14. write_lsn | 0/2F0001C0
  15. flush_lsn | 0/2F0001C0
  16. replay_lsn | 0/2F0001C0
  17. write_lag | 00:00:00.020258
  18. flush_lag | 00:00:00.020275
  19. replay_lag | 00:00:00.020298
  20. sync_priority | 2
  21. sync_state | potential
  22. reply_time | 2023-07-15 15:41:08.319377+08
  23. -[ RECORD 2 ]----+------------------------------
  24. pid | 1552
  25. usesysid | 35849
  26. usename | r1
  27. application_name | standby1
  28. client_addr | 10.0.0.199
  29. client_hostname |
  30. client_port | 39346
  31. backend_start | 2023-07-16 03:36:05.066217+08
  32. backend_xmin |
  33. state | streaming
  34. sent_lsn | 0/2F0001C0
  35. write_lsn | 0/2F0001C0
  36. flush_lsn | 0/2F0001C0
  37. replay_lsn | 0/2F0001C0
  38. write_lag | 00:00:00.0201
  39. flush_lag | 00:00:00.020134
  40. replay_lag | 00:00:00.020135
  41. sync_priority | 1
  42. sync_state | sync
  43. reply_time | 2023-07-15 15:41:08.285412+08

此时主库中synchronous_standby_names的设置顺序原因standby2为潜在同步从库。

 模拟同步从库standby1宕机

pg_ctl -D /home/postgres/standby1 stop

此时主库上可以看到standby2升级为了同步从库,而不影响生产的正产运行

 备注

关于synchronous_standby_names的值设置方法可以指定任意的多个从库为同步从库,其余为潜在,也可以指定所有的从库都为同步,不设定潜在从库。

synchronous_standby_names=‘any1(standby1,standby2,standby)’

synchronous_standby_names=‘first2(standby1,standby2,standby)’

本文中设定的方式为

synchronous_standby_names=‘standby1,standby2’

等同于synchronous_standby_names=‘first1(standby1,standby2)’

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/780359
推荐阅读
相关标签
  

闽ICP备14008679号