一、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);
网友评论