0

这是关于 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)

4

1 回答 1

0

首先,检查runtime_mysql_servers运行时。

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

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 能够在运行中(在故障转移之后)确定自己的读取器和写入器端点。

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

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

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

于 2019-08-09T18:46:25.177 回答