MySQL系列~Proxysql最佳实践一

2024-01-08  本文已影响0人  开心的蛋黄派

一、User表

在MySQL用户表中,我们插入了一条记录。这条记录定义了一个用户,具有特定的用户名、密码和属性。用户的默认主机组、默认模式、事务持久性、后端标识和最大连接数也已设置。此外,还确保最大连接数的一半小于MySQL的最大连接数,以避免超过系统的限制。

INSERT INTO mysql_users (username, password, active, default_hostgroup, default_schema, transaction_persistent, backend, max_connections)

VALUES ('用户名', '密码', 1, 主hostgroup_id, ' ', 1, 1, 128); 

-- 检查最大连接数是否超过了MySQL的最大连接数 

MAX_CONNECTIONS * 2 < mysql_max_connections;

二、Server表

在服务器表中,我们插入了三条记录来定义不同的数据库服务器。第一条和第二条记录定义了主服务器,包括主机组ID、主机名、端口、状态、权重、最大连接数和最大复制延迟。第三条记录定义了一个从服务器,其主机组ID、主机名、端口、状态、权重、最大连接数和最大复制延迟也已设置。

-- 主服务器1 

INSERTINTOmysql_servers (hostgroup_id, hostname, port, status, weight, max_connections, max_replication_lag)

VALUES(主hostgroup_id,'主库地址', 主库端口,'online', 权重为1,0);

-- 主服务器2 

INSERTINTOmysql_servers (hostgroup_id, hostname, port, status, weight, max_connections, max_replication_lag)

VALUES(从hostgroup_id,'主库地址', 主库端口,'online', 权重为1,0);

-- 从服务器1 

INSERTINTOmysql_servers (hostgroup_id, hostname, port, status, weight, max_connections, max_replication_lag)

VALUES(从hostgroup_id,'从库地址', 主库端口,'online', 权重为10000,120);

三、mysql_replication_hostgroups表

在复制主机组表中,我们插入了一条记录来定义主从复制关系。这条记录指定了写主机组和读主机组,并设置了只读检查类型。Proxysql可以动态识别只读设置,并根据配置将数据库归为读组或写组。如果所有数据库在配置文件中都设置为只读,则可以避免双写组的情况,并确保在切换时不会发生错误。

INSERTINTOmysql_replication_hostgroups (writer_hostgroup, reader_hostgroup, check_type)

VALUES(主hostgroup_id, 从hostgroup_id,'read_only');

四、mysql_query_rules表

在查询规则表中,我们插入了两条记录来定义查询路由规则。第一条记录指定了规则ID、激活状态、用户名和标志输出,第二条记录指定了规则ID、激活状态、标志输入、匹配模式、目标主机组和应用。这两条记录形成了一条链式规则,只有在SQL语句中拼接了“SLAVE”正则表达式才会走从库,否则都走主库。这种规则确保了查询的正确路由,并优化了数据库的性能和可用性。

-- 第一条查询路由规则:仅当flagOUT满足条件时走从库 

INSERTINTOmysql_query_rules (rule_id, active, username, flagOUT)

VALUES(1003,1,'aa',10003);

-- 第二条查询路由规则:当SQL语句中包含“SLAVE”正则表达式时走从库,否则都走主库 

INSERTINTOmysql_query_rules (rule_id, active, flagIN, match_pattern, destination_hostgroup, apply)

VALUES(10003,1,10003,'SLAVE',11,1);

上一篇 下一篇

猜你喜欢

热点阅读