首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用galera集群和主从复制设置proxysql读写拆分

使用galera集群和主从复制设置proxysql读写拆分
EN

Database Administration用户
提问于 2023-04-04 23:22:42
回答 1查看 98关注 0票数 2

我有以下设置:

  1. 三节星系团( galera -1、galera-2、galera-3)
  2. galera-2是主从-1(主从复制)
  3. 从-1是从-2和从-3的主人。
  4. 从-1,从-2和从-3有read_only = 1

我有以下ProxySQL配置:

代码语言:javascript
复制
mysql_servers = (
    {   address = "galera-1"   port = 3306   hostgroup = 2   },
    {   address = "galera-2"   port = 3306   hostgroup = 2   },
    {   address = "galera-3"   port = 3306   hostgroup = 2   },
    {   address = "galera-2"   port = 3306   hostgroup = 5
        max_replication_lag = 5   },    
    {   address = "slave-1"    port = 3306   hostgroup = 5
        max_replication_lag = 5   },
    {   address = "slave-2"    port = 3306   hostgroup = 5
        max_replication_lag = 5   },
    {   address = "slave-3"    port = 3306   hostgroup = 5
        max_replication_lag = 5   }
)

mysql_galera_hostgroups = (
    {
        active = 1  
        backup_writer_hostgroup = 4
        max_transactions_behind = 100
        max_writers = 1
        offline_hostgroup = 1
        reader_hostgroup = 3 
        writer_hostgroup = 2
        writer_is_also_reader = 0    
    }
)

mysql_replication_hostgroups = (
    {
        writer_hostgroup = 5
        reader_hostgroup = 6
    }
)

使用此配置:

  • 可供编写的服务器:
    • 主机组2(我将一直路由到这个)
    • 第5组

  • 可供阅读的服务器:
    • 第3组
    • 第4组
    • 第6组

如何以循环方式将读取查询路由到hostgoups 3、4或6?

代码语言:javascript
复制
mysql_query_rules = 
(
    {
        rule_id = 100
        active = 1
        match_pattern = "^SELECT .* FOR UPDATE"
        destination_hostgroup = 2
        apply = 1
    },
    {
        rule_id = 200
        active = 1
        match_pattern = "^SELECT .*"
        destination_hostgroup = 6
        apply = 1
    },
    {
        rule_id = 300
        active = 1
        match_pattern = ".*"
        destination_hostgroup = 2
        apply = 1
    }
)

我尝试过在Galera和MySQL复制之间混合组,但是事情变得非常混乱。

是否有办法创建一个主机组,以便我可以路由到“组”?

EN

回答 1

Database Administration用户

发布于 2023-04-10 14:34:22

调查一下,我找到了一个可能的解决方案,但我觉得有点过火了。安装3个ProxySQL服务器,以便在Galera和主/从副本之间进行读/写分离。

  1. 将ProxySQL 1配置为在ProxySQL 2和3之间保持平衡。
  2. ProxySQL 2在Galera节点之间配置了读/写拆分
  3. ProxySQL 3配置了主副本和副本之间的读/写分割

有什么评论吗?如果只使用一台ProxySQL服务器就能实现这一点,那就太好了。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/325606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档