微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Proxysql 不向多数据库集群中的 MySQL 副本/从属发送数据

如何解决Proxysql 不向多数据库集群中的 MySQL 副本/从属发送数据

TLDR; Proxysql 不发送任何数据或副本。 Master 工作正常,所有副本都被赶上,但它们不提供流量。

概述:主要问题是没有流量流向副本:

  • 我们有 4 个 MysqL 集群。每个都有一个主服务器和两个副本。
  • 副本都赶上了主并且复制得很好。
  • 我们正在... Drupal(叹气)现在,所以我们每个集群有多个数据库。所有人都拥有自己的 proxysql 用户认主机组。
  • Proxysql 在与副本的连接错误显示 null。看起来可以连接了。
  • 但所有流量都到达了主节点。它提供所有选择、更新和删除语句。
  • 我们在自己的写入和读取组中设置了主节点和副本(不在同一主机组中,因为我们更愿意手动指定哪个是主节点,哪个是副本)。

问题:我们如何让数据到达我们的副本,而不仅仅是主节点?

配置:

MysqL_users=
(
{ username = "company1",password = "aaaaaabbbbbbccccccdddddddfffffff",default_hostgroup = 10,max_connections = 200,active = 1,transaction_persistent = 0 },{ username = "company2",password = "aaaaaabbbbbbccccccdddddddggggggg",{ username = "company3",password = "aaaaaabbbbbbccccccdddddddhhhhhhh",default_hostgroup = 20,{ username = "company4",password = "aaaaaabbbbbbccccccdddddddiiiiiii",transaction_persistent = 0 }
.... and lots more. 
)

MysqL_servers =
(
# Cluster 1 (Master|Write Hostgroup)
{ address = "10.0.0.1",port  = 3306,hostgroup = 10,status = "ONLINE",weight = 1000,compression = 0,max_replication_lag = 2,max_connections = 300,max_latency_ms = 2000,comment="Cluster 1 (Master DB-1)" },# Cluster 1 (Slave|Read Hostgroup)
{ address = "10.0.0.2",hostgroup = 11,comment="Cluster 1 (Slave DB-2)" },{ address = "10.0.0.3",comment="Cluster 1 (Slave DB-3)" },# Cluster 2 (Master|Write Hostgroup)
{ address = "10.0.0.4",hostgroup = 20,comment="Cluster 2 (Master DB-4)" },# Cluster 2 (Slave|Read Hostgroup)
{ address = "10.0.0.5",hostgroup = 21,comment="Cluster 2 (Slave DB-5)" },{ address = "10.0.0.6",comment="Cluster 2 (Slave DB-6)" },)

MysqL_replication_hostgroups=
(
# Cluster 1
{ writer_hostgroup=10,reader_hostgroup=11,comment="Cluster 1 Master / Slave 1 " },# Cluster 2 
{ writer_hostgroup=20,reader_hostgroup=21,comment="Cluster 2 Master / Slave 1" },)

MysqL_query_rules=
(
  { rule_id = 1,active = 0,match_digest = ".",log = 1,apply = 0 },{ rule_id = 2,match_digest = "^SELECT\sname,\stype\sfrom\ssystem\sWHERE\sstatus.*",cache_ttl = 3600000,flagOUT = 2,apply = 1 },{ rule_id = 3,match_digest = "SELECT\sdisTINCT\sregistry.name\sAS\sname,\sregistry.filename\sAS\sfilename\sFROM\sregistry.*",{ rule_id = 4,match_digest = "SELECT\s.*\sFROM\smenu_router\sWHERE\spath\sIN.*",{ rule_id = 5,match_digest = "SELECT\sbase.vid\sAS\svid,\sbase.name\sAS\sname,\sbase.machine_name\sAS\smachine_name,\sbase.description\sAS\sdescription,\sbase.hierarchy\sAS\shierarchy,\sbase.module\sAS\smodule,\sbase.weight\sAS\sweight\sFROM\staxonomy_vocabulary\sbase\sWHERE",cache_ttl = 300000,{ rule_id = 6,match_digest = "^SELECT\snid,\sdata\sFROM\scompany_sync_nodes",{ rule_id = 7,match_digest = "^SELECT\sclient_name_display\sFROM\siss_dispatch_clients",{ rule_id = 8,match_digest = "SELECT\sf.fid\sAS\sfid\sFROM\sfile_managed\sf\sWHERE\s(f.status\s=\s.*)\sAND\s(f.uri\sLIKE\s.*\sESCAPE\s.*)\sAND\s(f.uri\sNOT\sLIKE\s.*\sESCAPE\s.*)\sAND\s(f.filemime\sNOT\sLIKE\s.*\sESCAPE\s.*\sORDER\sBY\sf.fid\sDESC\sLIMIT\s.*\sOFFSET\s.*",{ rule_id = 9,digest = "0x6C21FFE9B05A6873",{ rule_id = 10,{ rule_id = 11,digest = "0x7E8E89B6752B147F",{ rule_id = 12,digest = "0xF41E2E690383C416",{ rule_id = 13,match_pattern = ".*ProxysqlSendToSlave.*",{ rule_id = 99,flagOUT = 1,apply = 1 }
)

MysqL_variables=
{
  threads=4
  max_connections=2048
  connection_max_age_ms=1200000
  max_transaction_idle_time=1200000
  monitor_replication_lag_count=3
  default_query_delay=0
  default_query_timeout=36000000
  have_compress=true
  poll_timeout=2000
  interfaces="0.0.0.0:6033"
  default_schema="information_schema"
  stacksize=1048576
  server_version="5.5.30"
  connect_timeout_server=3000
  monitor_username="myusername"
  monitor_password="mypassword"
  monitor_history=600000
  monitor_connect_interval=30000
  monitor_slave_lag_when_null=60
  monitor_replication_lag_interval=30000
  monitor_ping_interval=10000
  monitor_read_only_interval=1500
  monitor_read_only_timeout=500
  ping_interval_server_msec=120000
  ping_timeout_server=500
  commands_stats=true
  sessions_sort=true
  connect_retries_on_failure=10
  monitor_writer_is_also_reader=false
  eventslog_filename="queries.log"
  log_unhealthy_connections="false"
  query_cache_size_MB=2000
}

解决方法

答案是,如果最后一条 mysql_query_rules 规则的 apply 为 1,则 mysql_query_rules_fast_routing 规则不会被应用。您需要将其保留为 apply=0,然后才会应用快速查询规则。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。