ZBLOG

proxysql配置双主读写分离

ProxySQL 配置双主读写分离指南

ProxySQL 是一个高性能的 MySQL 中间件,可以实现读写分离、查询路由、负载均衡等功能。以下是配置双主(Master-Master)复制环境下读写分离的步骤:

前提条件

  1. 已搭建好 MySQL 双主复制环境
  2. 已安装 ProxySQL (推荐版本 >= 2.0)

配置步骤

1. 登录 ProxySQL Admin Interface

  1. mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='ProxySQL> '

2. 添加后端数据库服务器

  1. INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES
  2. (10, 'master1_ip', 3306), -- writer
  3. (10, 'master2_ip', 3306), -- writer
  4. (20, 'master1_ip', 3306), -- reader
  5. (20, 'master2_ip', 3306); -- reader
  6. LOAD MYSQL SERVERS TO RUNTIME;
  7. SAVE MYSQL SERVERS TO DISK;

3. 配置监控用户

  1. UPDATE global_variables SET variable_value='monitor_user' WHERE variable_name='mysql-monitor_username';
  2. UPDATE global_variables SET variable_value='monitor_password' WHERE variable_name='mysql-monitor_password';
  3. LOAD MYSQL VARIABLES TO RUNTIME;
  4. SAVE MYSQL VARIABLES TO DISK;

确保在MySQL服务器上创建了监控用户并授予相应权限。

4. 配置读写分离规则

  1. -- writer组的流量路由规则 (hostgroup=10)
  2. INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES
  3. (1, 1, '^SELECT.*FOR UPDATE', 10,- reader组的流量路由规则 (hostgroup=20)
  4. INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup, apply) VALUES
  5. (5, 1, '^SELECT', 20, 1),
  6. (6, 0,'^SELECT.*INTO OUTFILE',10 , 1),
  7. (7 ,0,'^SELECT.*INTO DUMPFILE',10 , 1);
  8. LOAD MYSQL QUERY RULES TO RUNTIME;
  9. SAVE MYSQL QUERY RULES TO DISK;

###5 .配置用户访问权限

  1. INSERT INTO mysql_users(username ,password ,default_hostgroup ) VALUES ('app_user','app_password' ,10 );
  2. LOAD MYSQL USERS TO RUNTIME ;
  3. SAVE MYSQL USERS TO DISK ;

##高级配置选项

###负载均衡策略

  1. UPDATE mysql_servers SET weight=100 WHERE hostgroup_id=10 AND hostname='master1_ip';
  2. UPDATE mysql_servers SET weight=50 WHERE hostgroup_id=10 AND hostname='master2_ip';
  3. --设置reader组的负载均衡方式为轮询(RANDOM)
  4. UPDATE mysql_replication_hostgroups SET reader_writer_mode=2 WHERE writer_hostgroup=10 AND reader_hostgroup=20;
  5. LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQ L SERVERS T O DIS K;

##验证配置

检查服务器状态 :

  1. SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT3 ;
  2. SELECT * FROM monitor.mysql_server_replication_lag_log ORDER BY time_start DESC LIMIT3 ;

测试读写分离 :

  1. #写操作测试
  2. mysql -u app_user -papp_password -h proxysql_ip -P6033-e"CREATE DATABASE test_prox ysql;"
  3. #读操作测试
  4. mysql-u app_user-papp_password-h prox ysq l_i p-P6033-e"SHOW DATABASES ;"

##注意事项

1 .双主模式下要确保auto_increment_increment和auto_increment_offset正确设置以避免主键冲突

2 .定期检查复制延迟情况

3 .考虑使用proxysql-cluster实现高可用

4 .生产环境建议启用SSL加密连接


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23527

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?