完整的读一致性在Percona Kubernetes算子雷竞技下载官网的目的雷竞技下载官网基于Percona Percona运营商MySQL XtraDB集群一种特殊类型的控制器引入简化复杂的部署。操作员延伸Kubernetes API使用自定义的资源运营商解决方案是使用Percona XtraDB集群(PXC)雷竞技下载官网罩后面提供高可用性,有弹性,可伸缩的MySQL服务Kubernetes空间。

这个解决方案是Kubernetes提供的优势/劣势,加上自己的一些优势像读取的节点规模的能力并不主要。

当然,也有一些局限性像PXC处理ddl,这可能影响服务,但总是要付出成本的,期待着拥有一切免费是不合理的。

在这种背景下,我们需要谈谈,什么是完整的读一致性在这个解决方案中,为什么重要的是要理解它的角色。

陈旧的读取

当使用Kubernetes我们应该谈谈服务而不是关于技术/产品用于提供这样的服务。

在我们的示例中,Percona运营雷竞技下载官网商有提供一个MySQL服务。我们应该看到,作为一个整体而言,作为一个单独的对象。更清楚我们必须考虑的不是事实后面有一个集群服务,但是我们的服务是弹性和高可用性,使用一个集群。

我们不应该在乎一个节点/ pod下降,除非服务中断。

我们的+ Percona运营商解决方案是一定程度的阅读可伸缩雷竞技下载官网性。这个实现优化的使用非主节点,而不是让他们坐在那里只复制数据,应用Percona运营商提供他们规模。雷竞技下载官网

但是…总有一个但是

让我们先从一个图像:

通过设计、应用和提交完成Galera (PXC)可能(已经)节点之间的延迟。这意味着,如果使用默认值,应用程序可能不一致读如果试图访问比主要来自不同节点的数据。

它提供了访问使用两种不同的解决方案:

  • 使用HAProxy(默认)
  • 使用ProxySQL

当使用HAProxy你会有2个入口点:

  • cluster1-haproxy只点到主,读和写。这是默认入口点到MySQL数据库的应用程序。
  • cluster1-haproxy-replicas,指出这三个节点和应该是仅用于读取。这是加上可以使用如果您的应用程序有读/写分离。

请注意,目前没有什么防止一个应用程序使用cluster1-haproxy-replicas也写,但这是危险的,错误的,因为会产生很多冲突和男朋友中止认证给它将分发写在集群影响的性能(和不给你任何写缩放):

当使用ProxySQL入口点是一个,但你可以定义查询规则自动将R / W来自应用程序的请求。这是首选方法当应用程序无法独立的读与写。

在这里,我所做的比较两种方法的HAProxy ProxySQL。

现在,正如上面提到的,默认情况下,PXC(任何Galera基础解决方案)有一些轻松的设置,对于性能的目的。在许多标准的情况下,这通常是好的,但如果你使用Percona运算符和使用扩展的+读取使用第二接入点与Proxysql HAprox雷竞技下载官网y或查询规则,你不应该不新鲜的读取,考虑到服务必须提供一致的数据,如果你是在单个节点上。

实现,你可以改变默认值并改变参数PXC wsrep_sync_wait。

当改变参数wsrep_sync_wait解释的文档,节点发起一个因果关系检查,阻止传入查询虽然赶上了集群。

一旦所有节点上的数据接收commit_finalized读取请求,节点执行读。

但这有一个性能影响,之前说的。

的影响是什么?

测试性能影响我使用了一个集群部署在GKE,与这些特征:

  • 三个主要节点n2-standard-8(8个vcpu, 32 GB内存)
  • 1应用程序节点n2-standard-8(8个vcpu, 32 GB内存)
  • PXC豆荚使用:
    • 25 gb的可用的32
    • 6可用的CPU 8
  • HAProxy:
    • 600 CPU
    • 1 gb RAM
  • PMM代理
    • 500 CPU
    • 500 MB Ram

在应用程序节点,我使用sysbench运行两个实例,在r / w模式另一个只读取。最后,测试的阅读,我使用陈旧的阅读测试我的测试套件

给我在寻找结果与温和的负荷,我只是用每个sysbench 68/96/128线程实例。

结果

马可,我们有或没有过期读取吗?是的,我们做的:

我已经从0(很轻的负载)37%的读取慢化负载,在主持的128个线程sysbench运行。

设置wsrep_sync_wait = 3当然,我已经完全的一致性。但我有性能损失:

正如你所看到的,我已经平均损失11%的读取:

而对于写平均亏损16%。

结论

在这一点上,我们需要停下来思考什么是值得做的。如果读沉重和读扩展我的应用程序,它可能是值得额外的节点上启用完整的同步性给定的比例让我有2 x或多个读取。

如果我的申请是写关键,也可能失去~ 16%性能不好。

最后如果我的应用程序是陈腐的读取宽容,我就会使用默认值并得到所有的好处不处罚。

还请记住,Percona运营商基于Percon雷竞技下载官网a的MySQL XtraDB Clusteris旨在提供一个MySQL服务单节点的状态是不像如果您使用的是默认的关键PXC安装、豆荚天生短暂的对象而服务是有弹性的。

引用

雷竞技下载官网基于Percona Percona运营商MySQL XtraDB集群

https://github.com/Tusamarco/testsuite

https://en.wikipedia.org/wiki/Isolation_ (database_systems) # Dirty_reads

https://galeracluster.com/library/documentation/mysql-wsrep-options.html wsrep-sync-wait

https://www.slideshare.net/lefred.descamps/galera-replication-demystified-how-does-it-work

订阅
通知的
客人

1评论
最古老的
最新的 大多数投票
内联反馈
查看所有评论
尼克Bonilla

你推荐Kubernetes运行促使数据库?还是裸金属服务器上?