开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PolarDB没用K8S,用RPM包部署的高可用主从这个有没有好的方案?

请教一下,PolarDB没用K8S,用RPM包部署的高可用主从,业务需要注意自行感知 Leader 的切换,这个有没有好的方案

目前了解到ProxySQL组件,但它监测只读是根据 select @@read_only 来判断,而PolarDB是 SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL 来查询判断,后面会不会考虑同步 @@read_only 变量呢?CREATE TABLE mysql_replication_hostgroups (
writer_hostgroup INT CHECK (writer_hostgroup>=0) NOT NULL PRIMARY KEY,
reader_hostgroup INT NOT NULL CHECK (reader_hostgroup<>writer_hostgroup AND reader_hostgroup>=0),
check_type VARCHAR CHECK (LOWER(check_type) IN ('read_only','innodb_read_only','super_read_only','read_only|innodb_read_only','read_only&innodb_read_only')) NOT NULL DEFAULT 'read_only',
comment VARCHAR NOT NULL DEFAULT '', UNIQUE (reader_hostgroup))

这个是它的表结构,里面 check_type 默认的只有两项,自定义查询 SQL 好像需要另外配任务指定 shell 脚本去判断,要复杂一些,毕竟 ProxySQL 是对接 MySQL 的

展开
收起
cuicuicuic 2024-02-21 16:10:56 36 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    对于PolarDB的高可用主从部署,确实需要自行感知Leader的切换。目前ProxySQL组件可以用于监测PolarDB的主从状态,但它默认只支持MySQL的@@read_only变量来判断是否为只读模式。

    关于您提到的check_type字段,它是用来指定检查类型,以确定当前节点是写入节点还是读取节点。根据您的描述,check_type默认只有两项,即'read_only'和'innodb_read_only'。这意味着ProxySQL默认只能检测这两种类型的只读模式。

    如果您希望使用自定义查询SQL来检测PolarDB的主从状态,可以考虑编写一个Shell脚本来实现。这个脚本可以定期运行,并执行您的自定义查询SQL,然后根据查询结果判断当前的主从状态。您可以将该脚本配置为定时任务,以便在PolarDB发生主从切换时自动触发相应的操作。

    以下是一个示例Shell脚本,用于检测PolarDB的主从状态:

    #!/bin/bash
    
    # 设置数据库连接信息
    HOST="your_polardb_host"
    PORT="your_polardb_port"
    USERNAME="your_username"
    PASSWORD="your_password"
    DATABASE="your_database"
    
    # 执行自定义查询SQL
    QUERY="SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL"
    RESULT=$(mysql -h $HOST -P $PORT -u $USERNAME -p$PASSWORD -D $DATABASE -e "$QUERY")
    
    # 解析查询结果,判断主从状态
    if [[ $RESULT == *"writer_hostgroup"* ]]; then
        echo "当前节点是写入节点"
    else
        echo "当前节点是读取节点"
    fi
    

    请注意,上述示例中的数据库连接信息(HOST、PORT、USERNAME、PASSWORD和DATABASE)需要根据实际情况进行替换。此外,您还可以根据实际需求对脚本进行进一步的定制和优化。

    通过编写这样的Shell脚本,您可以实现对PolarDB主从状态的监控,并在主从切换时执行相应的操作。这可以帮助您更好地管理和处理PolarDB的高可用性需求。

    2024-02-21 21:43:43
    赞同 展开评论 打赏
  • 嗯,了解下业务背景,我们也在规划提供三节点配套的proxy组件——此回答整理自微信群:阿里云 PolarDB-X开源交流2号群

    2024-02-21 16:14:02
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
智算时代,基于 Kubernetes 落地云原生 AI 立即下载
容器服务 ACK 加速企业应用现代化升级 立即下载
容器服务 ACK – 智算时代的现代化应用平台 立即下载

相关镜像