【问题标题】:ProxySQL setup hostgroup concernProxySQL 设置主机组问题
【发布时间】:2019-08-09 01:52:28
【问题描述】:

这是关于 AWS 的这条指令的。

https://aws.amazon.com/blogs/database/how-to-use-proxysql-with-open-source-platforms-to-split-sql-reads-and-writes-on-amazon-aurora-clusters/

我不确定 hostgroup_id 是否有问题。当我运行“SELECT hostgroup_id, hostname, status FROM mysql_servers;” ,它显示 10 表示主服务器,20 表示只读副本,但是,在我运行“LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK;”,两台主机的hostgroup_id都变为20,正常吗?请指教。谢谢

ProxySQLAdmin> INSERT INTO mysql_servers (hostname,hostgroup_id,port,weight,max_connections) VALUES ('uatrds1.ap-southeast-2.rds.amazonaws.com 



',10,3306,1000,10000);
Query OK, 1 row affected (0.00 sec)

ProxySQLAdmin> INSERT INTO mysql_servers (hostname,hostgroup_id,port,weight,max_connections) VALUES ('uatreadreplica.ap-southeast-2.rds.amazonaws.com 



',20,3306,1000,10000);
Query OK, 1 row affected (0.00 sec)

ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM mysql_servers;
+--------------+--------------------------------------------------------------+--------+
| hostgroup_id | hostname                                                     | status |
+--------------+--------------------------------------------------------------+--------+
| 10           | uatrds1.ap-southeast-2.rds.amazonaws.com 



        | ONLINE |
| 20           | uatreadreplica.ap-southeast-2.rds.amazonaws.com 



 | ONLINE |
+--------------+--------------------------------------------------------------+--------+

ProxySQLAdmin> LOAD MYSQL SERVERS TO RUNTIME;
Query OK, 0 rows affected (0.00 sec)

ProxySQLAdmin> SAVE MYSQL SERVERS TO DISK;
Query OK, 0 rows affected (0.02 sec)


ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM mysql_servers;
+--------------+--------------------------------------------------------------+--------+
| hostgroup_id | hostname                                                     | status |
+--------------+--------------------------------------------------------------+--------+
| 20           | uatrds1.ap-southeast-2.rds.amazonaws.com 



        | ONLINE |
| 20           | uatreadreplica.ap-southeast-2.rds.amazonaws.com 



 | ONLINE |
+--------------+--------------------------------------------------------------+--------+
2 rows in set (0.00 sec)

【问题讨论】:

    标签: proxysql


    【解决方案1】:

    首先,检查runtime_mysql_servers 的运行时。

    其次,当使用傲罗而不是阅读器的只读端点时,您还应该使用check_type = 'innodb_read_only' 设置mysql_replication_hostgroups 表。否则,您的设置会在故障转移时中断(在故障转移时,所有极光节点都将重新启动)。

    MySQL [(none)]> select * from runtime_mysql_servers;
    +--------------+---------------------------------------------------------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    | hostgroup_id | hostname                                                      | port | gtid_port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
    +--------------+---------------------------------------------------------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    | 0            | some-aurora-node    | 3306 | 0         | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |         |
    | 1            | an other-aurora-node| 3306 | 0         | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |         |
    +--------------+---------------------------------------------------------------+------+-----------+--------+--------+-------------+-----------------+---------------------+---------+----------------+---------+
    2 rows in set (0.00 sec)
    
    MySQL [(none)]> select * from runtime_mysql_replication_hostgroups;
    +------------------+------------------+------------------+---------+
    | writer_hostgroup | reader_hostgroup | check_type       | comment |
    +------------------+------------------+------------------+---------+
    | 0                | 1                | innodb_read_only |         |
    +------------------+------------------+------------------+---------+
    1 row in set (0.00 sec)
    
    MySQL [(none)]> select rule_id, active, destination_hostgroup, match_pattern from runtime_mysql_query_rules;
    +---------+--------+-----------------------+-------------------------+
    | rule_id | active | destination_hostgroup | match_pattern           |
    +---------+--------+-----------------------+-------------------------+
    | 1       | 1      | 1                     | ^SELECT                 |
    | 2       | 1      | 0                     | ^SELECT.*FOR UPDATE$    |
    +---------+--------+-----------------------+-------------------------+
    2 rows in set (0.00 sec)
    
    

    此外,不要忘记将monitor 凭据添加到极光。与 proxysql 相比,proxysql 能够在运行中(在故障转移之后)确定自己的读取器和写入器端点。

    CREATE USER 'proxysql'@'%' IDENTIFIED BY 'monitor';
    GRANT USAGE ON *.* TO 'proxysql'@'%';
    

    monitor是proxysql的monitor用户的默认密码。

    我强烈建议阅读 proxysql https://github.com/sysown/proxysql/wiki 的 wiki,它有很好的文档记录,并且有很多示例。
    关于 proxysql 的第二个信任来源是 percona 博客:https://www.percona.com/doc/percona-xtradb-cluster/5.7/howtos/proxysql.html
    不要依赖营销博客:)

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2021-04-01
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2019-02-24
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多