postgreSQL数据库同步流复制和异步流复制控制

编程入门 行业动态 更新时间:2024-10-23 21:38:18

postgreSQL<a href=https://www.elefans.com/category/jswz/34/1771350.html style=数据库同步流复制和异步流复制控制"/>

postgreSQL数据库同步流复制和异步流复制控制

作者:瀚高PG实验室 (Highgo PG Lab)- 徐云鹤
背景:
小L:鹤神鹤神,为什么我设置的同步流复制,主库提交之后备库查不到数据呢?
我:估计是你设置的同步级别不够高~
小L:还分同步级别?同步模式不就是保证两边数据一致的吗?怎么还会出现主库能查到数据备库查不到数据的情况呢?查询pg_stat_replication里边显示sync不就是代表数据一致吗?
我:带我给你慢慢道来。

pg同步流复制和异步流复制关键在于两个参数:
synchronous_standby_names 控制哪些standby被应用同步策略,该参数使用方法不在此赘述;
synchronous_commit控制同步策略级别。
你以为的同步可能不是你以为的同步。
即使是通过pg_stat_replication查询出sync_state列值为sync也不一定是真正的同步。
下边通过一个图片和表格来直观提现什么时候是同步,什么时候是异步,及不同等级之间的区别。

synchronous_commit参数:

同步等级设定值概述保证范围
同步remote_apply应用发起提交后,等到在备库上应用WAL(更新数据)后,它将返回COMMIT响应,并且可以在备库上进行引用。由于完全保证了数据同步,因此它适合需要备库始终保持最新数据的负载分配场景。1-9
同步on(默认)应用发起提交后,在备库上写入WAL之后,返回COMMIT响应。该选项是性能和可靠性之间的最佳平衡。1-6
准同步的remote_write应用发起提交后,等到WAL已传输到备库后,返回COMMIT响应。1-5
异步local应用发起提交后,写入主库WAL之后,返回COMMIT响应。1-2
异步off应用发起提交后,直接返回COMMIT响应,而无需等待主库WAL完成写入。1

最后举个例子,主库设置synchronous_commit为on,备库设置recovery_min_apply_delay = ‘1d’。
这样就会出现主库pg_stat_replication查询出sync_state列值为sync,提交一条数据后备库查不到的现象。

更多推荐

postgreSQL数据库同步流复制和异步流复制控制

本文发布于:2024-02-06 15:32:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749788.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据库   postgreSQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!