Mysql高可用集群Percona XtraDB应用分享

1.简介


Percona XtraDB Cluster是一个完全开源的 MySQL 高可用性解决方案。它将Percona ServerPercona XtraBackupGalera库集成在一起,以实现同步多源复制。

集群节点 组成,其中每个节点包含跨节点的同一组数据同步。推荐的配置是至少有 3 个节点,但您也可以有 2 个节点。每个节点都是一个常规的 MySQL Server 实例(例如,Percona Server)。您可以将现有的 MySQL Server 实例转换为节点,并使用该节点作为基础运行集群。您还可以从集群中分离任何节点并将其用作常规 MySQL 服务器实例。

_images/cluster-diagram1.png

好处:

  • 当您执行查询时,它会在节点上本地执行。所有数据都在本地可用,无需远程访问。
  • 没有中央管理。您可以在任何时间点松开任何节点,集群将继续运行而不会丢失任何数据。
  • 扩展读取工作负载的好解决方案。您可以对任何节点进行读取查询。

缺点:

  • 供应新节点的开销。添加新节点时,它必须从现有节点之一复制完整数据集。如果是 100GB,则复制 100GB。
  • 这不能用作有效的写入缩放解决方案。当您将写入流量运行到 2 个节点与所有流量都运行到 1 个节点时,写入吞吐量可能会有一些改进,但您不能期望太多。所有写入仍然必须在所有节点上进行。
  • 您有多个数据副本,对于 3 个节点,您有 3 个副本。

以上简介来自于官方文档机器翻译

2.从开源应用商店一键安装

3.应用介绍

mysql-percona-cluster 由三个组件组成:

  1. etcd-cluster
  2. pxc-db
  3. pxc-haproxy

etcd-cluster:

  • 提供给 pxc-db 进行服务发现,每个pxc-db 实例都会注册到 etcd-cluster 中。

pxc-db:

  • 提供3副本的Mysql实例。

pxc-haproxy:

  • 检测 pxc-db 服务的健康状态,当 pxc-db 有实例不健康时,会在 pxc-haproxy 中下线。

4. 使用介绍

如何连接:

连接 pxc-haproxy 对内或对外端口,mysql 用户密码在 pxc-db 依赖信息中获取

pxc-db组件可配置变量:

变量名 变量默认值
MYSQL_ROOT_PASSWORD 随机生成
MYSQL_USER admin
MYSQL_PASSWORD 随机生成
XTRABACKUP_PASSWORD Theistare(不可修改)
MYSQL_DATABASE initial
MONITOR_HOST %(不可修改)

5. 使用须知

  • 建议非必须不要重启集群。

  • 如果必须要重启集群,在Rainbond平台上不要点击重启按钮,要先关闭在启动,关闭后要等待2分钟在启动。因为 pod 重启后 IP 会变化, etcd 作为服务发现设置了 TTL 值为:120秒,如果我们马上重启,etcd 中旧的 POD IP 未清除将会导致集群启动失败。

  • 当大家部署完集群后需要扩容 pxc-db 的内存,在组件的伸缩页面根据需求扩容即可,扩容后需重启 pxc-haproxy 获取 pxc-db 的新实例。

6. PXC集群运行机制介绍

例子1:

  • 三节点中有某个节点宕机,不会影响整个集群运行,仍可正常使用。当宕机的节点启动后,将自动加入集群进行数据同步。

例子2:

  • 三节点中宕机了俩个节点,这时集群已经不可用,至少有2个以上的节点才可正常。

例子3:

  • 三节点全部宕机,集群不可用,待所有节点启动后,集群自动恢复正常。

例子4:

  • 三节点宕机一个节点,集群正常运行,其他俩个节点陆续写入数据。然后集群整个宕机,此时启动集群,集群不知道哪个节点是最新的数据,这时需要我们根据日志手动选择主节点,选择主节点后集群将自动恢复。