POLARDB的读写分离问题

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: POLARDB的读写分离问题

读写分离问题
  POLARDB自带一个只读实例,增减只读实例非常快速,所以用户非常适合使用读写分离的功能,但是从目前用户的反馈来看,如果在插入数据后立刻查询,很容易查询到之前旧版的数据,为了解决这个问题,我们给出两种解法。一种是通过POLARDB数据库内核的强同步保证主实例和只读节点数据一致,另外一种是通过数据库前面的PROXY层来解决。下面简单介绍一下。

  POLARDB集群基于物理复制构建,目前复制除了支持常规的异步复制(默认),半同步复制之外,还有强同步复制,即当事务提交时,只有当指定的只读实例应用完redolog日志后,主实例才给用户返回成功。这样即使后续的读请求发送到了只读节点,也能保证读到最新的数据。但是这个配置会导致性能大幅度下降,只有默认异步复制的三分之一左右,在使用之前请做详细的测试。简单说一下配置过程:

  首先需要在主实例上设置:设置loose_innodb_primary_sync_slave为3,目的是告诉主实例,它连接的只读实例会有强同步的需求。接着在需要强同步的只读实例上把参数loose_slave_trans_sync_level设置为2,注意这个参数需要重启实例。另外,先设置主实例,再设置只读实例的顺序不能乱。设置成功后,在主实例上执行show polar replicas;(这个命令可以查看所有的只读实例),在sync_level这一列,可以发现由默认的0变成了2,这就表示强同步开启成功了。如果需要关闭强同步,在主实例上设置loose_innodb_primary_sync_slave为0,只读节点上设置loose_slave_trans_sync_level设置为0即可,注意设置的顺序依然不能乱。此外,如果强同步的只读实例在loose_innodb_primary_sync_slave_timeout后还没返回,强同步复制退化为异步复制,还可以通过loose_innodb_primary_sync_slave参数控制当只读节点掉线时是否立刻退化为异步复制。

  另外一种解决办法是通过PROXY来解决。主实例每次做完更新就会把当前的日志位点发给PROXY,同时PROXY也会定期去轮询最大的日志位点,当PROXY需要把后续的查询发到只读实例上时,首先会判断只读实例是否应用到了最新的位点,如果不是,就把请求转发到主实例。这个策略操作的单位是连接,即通过这种方法能保证同一个连接中读到的一定是最新的数据。这种方法虽然会导致主库的压力变大,但是其对性能影响较小,是一种推荐的方法。如果用户需要使用,联系售后做一次小版本升级,即可开放这个功能。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
4月前
|
监控 关系型数据库 分布式数据库
PolarDB 读写分离的最佳实践
【8月更文第27天】PolarDB 是阿里云推出的一款高度兼容 MySQL、PostgreSQL 和 Oracle 的云原生数据库服务。它支持读写分离,能够显著提高应用的性能和响应速度。本文将详细介绍如何在 PolarDB 中实施读写分离策略,并通过示例代码演示具体的配置步骤。
144 1
|
5月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之读写分离是否有延时时间
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之如何在不使用集群地址时,使用读写分离功能
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之如何在不使用集群地址时,使用读写分离功能
|
7月前
|
SQL 存储 负载均衡
关系型数据库读写分离与主从复制
【5月更文挑战第2天】关系型数据库读写分离与主从复制
64 5
关系型数据库读写分离与主从复制
|
7月前
|
负载均衡 关系型数据库 分布式数据库
【PolarDB开源】PolarDB读写分离实践:优化读取性能与负载均衡策略
【5月更文挑战第26天】PolarDB是云原生关系型数据库,通过读写分离优化性能和扩展性。它设置主节点处理写操作,从节点处理读操作,异步复制保证数据一致性。优化读取性能的策略包括增加从节点数量、使用只读实例和智能分配读请求。负载均衡策略涉及基于权重、连接数和地理位置的分配。实践示例中,电商网站通过主从架构、只读实例和负载均衡策略提升商品查询效率。PolarDB的读写分离与负载均衡为企业应对大数据和高并发提供了有效解决方案。
257 0
|
Cloud Native 关系型数据库 分布式数据库
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——读写分离
阿里云最新产品手册——阿里云核心产品——云原生关系型数据库PolarDB——读写分离自制脑图
83 1
|
分布式数据库 调度 数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践
572 0
|
分布式数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(2)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(2)
435 0
|
分布式数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(3)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(3)
563 0
|
SQL 分布式数据库
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(4)
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(4)
738 0