点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
适用场景
现在我们介绍一款基于ProxySQL中间件实现业务数据读写分离的方案,是一个可以实现MySQL读写分离的轻量级工具,是一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现数据的读写分离。
ProxySQL简介
2.1 介绍
ProxySQL是由C++语言开发,可以实现MySQL数据读写分离的轻量级工具,一款MySQL数据库的开源中间件产品,轻量级但性能优异(支持处理千亿级数据),具有如下功能:
多种方式的读写分离; 定制基于用户、基于schema、基于语言的规则对SQL语句进行路由; 缓存查询结果; 后端节点的控制。
2.2 特点
将所有配置保存写入到SQLit表中; 支持动态加载配置,即一般可以在线修改配置,但有少部分参数还是需要重启来生效; 支持query cache; 支持对query的路由,可以针对某个语句进行分配去哪个实例执行; 故障切换; 过滤危险的SQL; 不支持分表,可以分库,但是利用规则配置实现分表。
技术架构

MySQL、Keepalived安装
ProxySql安装详细步骤
5.1 设置yum源
5.2 安装依赖包
#yum install openssl openssl-devel kernel-devel gcc gcc-c++ -y
#yum install perl-DBI -y
#yum install perl-DBD-MySQL -y
#yum install perl-Time-HiRes -y
#yum install perl-IO-Socket-SSL -y
5.3 安装proxysql
#yum install -y proxysql-1.4.8-1-centos7.x86_64.rpm
5.4 设置环境
#mkdir -p /var/lib/proxysql
#chown -Rf mysql.mysql /usr/share/proxysql/
#chown -Rf mysql.mysql /var/lib/proxysql
#chown mysql.mysql /etc/proxysql.cnf
#systemctl start proxysql.service
5.5 配置过程

mysql -uadmin -padmin -h127.0.0.1 -P6032
mysql>insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(1,' 192.168.100.1',3306,1,'Write Group');
mysql>insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,' 192.168.100.2',3306,1,'Read Group');
mysql>insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,' 192.168.100.3',3306,1,'Read Group');
mysql>insert into mysql_servers(hostgroup_id,hostname,port,weight,comment) values(2,' 192.168.100.4',3306,1,'Read Group');
GRANT ALL ON *.* TO 'shsnc'@'192.168.%' IDENTIFIED BY '1qaz!QAZ';
mysql>insert into
mysql_users(username,password,default_hostgroup,transaction_persistent)values('shsnc','1qaz!QAZ',1,1);
mysql>GRANT SELECT ON *.* TO 'monitor'@'192.168.%'
IDENTIFIED BY 'MonitoR';
mysql>set mysql-monitor_username='monitor';
mysql>set mysql-monitor_password='MonitoR';
mysql>insert into
mysql_query_rules(rule_id,active,match_digest,destination_ho
stgroup,apply)values(1,1,'^SELECT.*FOR UPDATE$',1,1);
mysql>insert into
mysql_query_rules(rule_id,active,match_digest,destination_ho
stgroup,apply)values(2,1,'^SELECT',2,1);
mysql>load mysql users to runtime;
mysql>load mysql servers to runtime;
mysql>load mysql query rules to runtime;
mysql>load mysql variables to runtime;
mysql>load admin variables to runtime;
mysql>save mysql users to disk;
mysql>save mysql servers to disk;
mysql>save mysql query rules to disk;
mysql>save mysql variables to disk;
mysql>save admin variables to disk;
mysql>select * from stats_mysql_query_digest;
mysql>select * from stats_mysql_processlist ;
mysql>select * from runtime_mysql_servers;
$less /var/lib/proxysql/proxysql.log

本文作者:程继贵(上海新炬王翦团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




