Skip to main content

MySQL集群

数据库集群,顾名思义,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,为客户端提供透明的数据服务。

目前市场上使用的集群有很多种,3M、Master+Slave、Mysql+Fabric等,本系统使用的是MySQL Group Replication模式集群。集群版本是5.7.22、8.0.20。

MySQL Group Replication有两种模式,单主模式“single-primary mode”和多主模式“multi-primary mode”,在同一个group内,不允许两种模式同时存在,并且若要切换到不同模式,必须修改配置后重新启动集群。

单主模式

在单主模式下,只有一个节点可以读写,其他节点只能提供读,在单主模式下,提供高可用,当主节点故障后,备节点自动升级为主节点,包含一个主节点和多个备节点,主备节点的数据通过实时复制保持一致,备节点为只读节点,系统自动进行读请求的负载均衡。单主模式示意图如下所示。

1640915862138.png

多主模式

在多主模式下,在加入该群组的所有成员,所有服务器都设置为读写模式。节点均为主节点,不存在Slave延迟,具有读和写的扩展能力。多主模式示意图如下所示。

1640915875904.png

创建一个数据库集群

创建MySQL集群的步骤如下所示。

tip

前提条件

MySQL对应的Mysql Cluser Operator插件根据项目需要安装配置,由项目管理员以上权限的成员在项目维度安装对应的operator,方可部署该operator集群。

(1) 用户点击[所有产品/中间件/应用],选择对应的集群项目,点击MySQL集群页签的“部署”按钮,进入MySQL集群部署配置页面,如下图所示。

test

(2) 填写数据库集群名称,配置集群实例资源,选择访问方式,选择集群模式,填写副本数,选择存储卷,输入密码。高级配置中支持对MySQL数据进行备份和管理,也可以修改MySQL配置文件中的内容。

(3) 选择备份方式,支持FTP的方式(需提供FTP服务地址、用户名、密码)或RBD存储的方式(保证默认的RBD存储集群在[集群详情、集群存储]中配置了radosgw地址)备份。

(4) 选择备份工具,支持“mysqldump”备份工具。选择“mysqldump”,则集群仅支持全量备份,支持跨集群恢复数据。

(5) 选择管理工具phpmyadmin,开启后支持通过web管理MySQL,管理工具支持自定义工具运行的容器配置和服务出口的访问IP地址。

(6) 单击<创建>按钮,即可创建一个MySQL集群。

创建完成后不支持修改集群模式,请在创建时确定好需要的集群模式。

查看集群

基础信息

找到需要查看详情的MySQL集群,点击展开详情,进入基础信息可以查看新创建的数据库集群的参数、资源配置、实例副本等信息,如下图所示。

test
info

  • 参数:用户名和密码,可以修改密码。
  • 资源配置:可以修改数据库实例配置,这里是一个容器的配置,总配置=资源配置*实例副本数。
  • 管理工具:可以修改phpmyadmin工具的服务出口和运行的配置。
  • 实例副本:可修改容器实例的副本数,可查看节点的容器名和挂载路径。一般容器实例数多于1时,数据库可用性更高,推荐实例数为3。
  • 存储

    切换存储,可以查看当前存储卷配置,如下图所示。

    test

    Cephrbd和Glusterfs停止数据库集群后,可以扩容,用户可按需配置,拖动即可调整存储配置。

    备份

    数据库集群运行成功后,可以手动设置备份链,如下图所示。

    test

    (1) 点击<手动备份>,进入手动备份配置页面。

    (2) 输入备份名称,建立一个备份链。新建备份链时,会进行一次全量备份。之后的手动备份和自动备份都依赖此全量备份的基础上做差异备份。备份链建立之后,就可以开启自动备份。

    点击“设置自动备份”,如下图所示。

    test

    可以设置每周的某天某时间开始备份,支持对已有的备份进行“删除”操作,找到要删除的备份点,下拉操作框点击删除,在弹出框中点击确定删除即可。

    回滚

    若因误操作或应用逻辑的bug导致业务数据的丢失,可以通过“回滚”操作恢复到某个备份点的状态。回滚操作后可基于回滚后的数据继续做备份。

    配置管理

    配置管理中可以修改“mysql.conf”文件中内容,从而对该数据库集群进行调优。重新编辑配置文件后,系统将重启该集群的所有实例,将进行滚动升级。

    访问方式

    可以修改数据库访问方式,修改网络出口等。

    容器监控

    监控pod实例的关键参数,包括CPU、内存、网络、硬盘相应信息。

    性能监控

    性能监控集成了Grafana开源工具,将通过Prometheus抓取的监控数据可视化地展示,方便用户查看集群运行状态,页面如下所示。

    note

  • 用户在配置middleware-monitor插件时,需要选择有域名的网络出口。
  • Middleware监控服务地址需要在局域网DNS解析到网络出口IP上,若局域网未解析,可以临时添加到tce的hosts文件里,tce重启后会失效。
  • 监控服务需通过HTTPS访问,自签证书需对证书进行信任操作,才可实现数据的正常访问。
  • test

    日志

    切换日志可以查看集群创建过程中日志,同时事件中将记录回滚、删除、扩容等操作。

    事件

    切换事件可以查看集群创建过程中事件,同时事件中将记录回滚、删除、扩容等操作。

    info

  • SuccessfulCreate消息:pvc: datadir-mydb-0
  • SuccessfulCreate消息:pet: mydb-0
  • SuccessfulCreate消息:pvc: datadir-mydb-1
  • SuccessfulCreate消息:pvc: datadir-mydb-2
  • SuccessfulCreate消息:pet: mydb-1
  • SuccessfulCreate消息:pet: mydb-2
  • 租赁信息

    平台计费功能开启后,用户可以查看对应集群的租赁信息。

    删除集群

    (1) 点击集群名称链接,进入集群详情页。

    (2) 点击右上角“其他操作/删除”操作,删除集群。

    重启集群

    (1) 点击集群名称链接,进入集群详情页。

    (2) 点击右上角“其他操作/重启”操作,重启集群。

    停止/启动

    (1) 点击集群名称链接,进入集群详情页。

    (2) 集群运行状态,点击右上角“其他操作/停止”操作,停止集群。

    (3) 集群停止状态,点击右上角“其他操作/启动”操作,启动集群。

    数据同步

    在云平台的日常运维工作中,有很多故障排查和数据核对的场景,为了给全线运维人员(含部分开发和运营分析人员)提供现网数据的实时查询,我们使用MySQL和工具otter-manager搭建了一套数据查询和管理系统,通过该系统用户可以方便地查询平台各资源池当前的数据,并且可以实现集群数据的实时同步(秒级延时),数据同步原理示意图如下所示。

    test

    MySQL监控

    平台支持MySQL exporter,支持通过外部将数据源信息可视化为相应的图表,便于用户掌握集群的运行状态,系统获取的可视化图表示例如下所示。

    testtesttesttest