Proxysql读写分离配置
2018-06-18 01:00:34来源:未知 阅读 ()
ProxySQL是Percona主推的读写分离中间件,下载地址为:
1:下载
wget https://www.percona.com/downloads/proxysql/proxysql-1.4.5/binary/redhat/6/x86_64/proxysql-1.4.5-1.1.el6.x86_64.rpm
2:安装
rpm -ivh proxysql-1.4.5-1.1.el6.x86_64.rpm
3:启动
service proxysql start/stop/status
二、配置
--登录Proxysql管理和监控界面(也是使用Mysql协议,端口是6032,不加-h会自动使用本地sock连到3306的mysql端口,所以必须要加上-h参数) mysql -uadmin -padmin -P6032 -h127.0.0.1
main
是默认的数据库名,表里存放后端db实例、用户验证、路由规则等信息。表名以 runtime_开头的表示proxysql当前运行的配置内容,不能通过dml语句修改,只能修改对应的不以 runtime_ 开头的(在内存)里的表,然后 LOAD 使其生效, SAVE 使其存到硬盘以供下次重启加载。
disk
是持久化到硬盘的配置,sqlite数据文件。
stats
是proxysql运行抓取的统计信息,包括到后端各命令的执行次数、流量、processlist、查询种类汇总/执行时间,等等。
monitor
存储 monitor 模块收集的信息,主要是对后端db的健康/延迟检查。
Proxysql登录管理和监控界面后,不需要使用use database_name;的命令,直接查询下列表即可。
主要的表信息:
其中最重要的是mysql_servers,mysql_users,mysql_query_rules这3个表,其他表很少修改。这3个最重要的表的内容也可以在/etc/proxysql.conf中修改,但只是第一次初始化时有用,以后的修改和初始化信息都是存储在sqllite文件中的,建议不要对/etc/proxysql.conf做任何修改。
- mysql_servers:
定义所有可用的mysql数据库IP,hostgroup_id可以自定义,只需将读和写的组设为不一样的hostgroup_id即可。
本例中是在MHA环境下配置的,59、60、61为MHA的3个节点,其中59目前为master,200为MHA的VIP(公共IP)。
在配置完mysql_users后,ProxySQL为每个mysql_servers表中定义的hostname创建一个默认的连接放入连接池中,可以通过查看stats_mysql_connection_pool表获知。
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment)
values(100,'10.0.1.59',3306,1,1000,10,'test my proxysql');
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment)
values(100,'10.0.1.60',3306,1,1000,10,'test my proxysql');
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment)
values(100,'10.0.1.61',3306,1,1000,10,'test my proxysql');
insert into mysql_servers(hostgroup_id,hostname,port,weight,max_connections,max_replication_lag,comment)
values(1000,'10.0.1.200',3306,1,1000,10,'test my proxysql');
这里把MHA的3个节点的IP--59,60,61的hostgroup_id设为100,将MHA的VIP--200的hostgroup_id设置为1000,实现读写分离和读的负载均衡。
- mysql_users:
定义连接proxysql的数据库账户和密码,首先需要此账号在mysql库中存在,这里使用已经存在的账leo,可以看到这个账号既能连接mysql也能连接proxysql的6033端口。
default_hostgroup可以设为上边定义的1000,这样所有连接到MHA所在服务器的6033端口的客户端会话都会默认转发到hostgroup 1000上,但是如果设置了任何mysql_query_rules,那么只要有select操作就会按mysql_query_rules的规则转发,所以如果你设置了mysql_query_rules,那么select @@hostname;查到的可能不会是hostgroup为1000的节点,因为这也属于select语句。本例中hostgroup为1000的是MHA的VIP,proxysql自动连接到MHA的VIP上,即始终默认连接到master库,执行任何语句都会根据mysql_query_rules的规则转发。
一般会话都不会只执行select或者只执行DML操作,因此default_hostgroup可设可不设。
insert into mysql_users(username,password,active,default_hostgroup,transaction_persistent) values('leo','leo',1,1000,1); --需要注意的是这里的password是明文密码,可以使用如下方式加密一下。 save mysql users to mem; --然后就可以看到mysql_users里的密码变成了密文。
建议再定义一个监控账号,如下:
mysql> GRANT SUPER,REPLICATION CLIENT ON *.* TO 'proxysql' IDENTIFIED BY 'proxysql';
然后mysql -uadmin -padmin -h127.0.0.1 -P6032进入管理和监控界面:
set mysql-monitor_username='proxysql';
set mysql-monitor_password='proxysql';
--此账号也可以不配置直接使用默认的admin:admin,区别是默认的admin:admin权限很大,且只能在本地登录,而自己设置的proxysql账户只能看到监控信息。
最后再load并在sqlite中保存上述各种修改:
load mysql servers to runtime;
load mysql users to runtime;
load mysql variables to runtime;
save mysql servers to disk;
save mysql users to disk;
save mysql variables to disk;
- mysql_query_rules:
定义读写分离规则,可以看到是通过正则实现的,下列定义表示除了select for update,其他的select一律转发到hostgroup_id为100的虚拟节点上,也就说读操作负载均衡的分配到59、60、61三个库上。其他操作使用默认的hostgroup_id为1000的库,也就是MHA的master库。
INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply)
VALUES(1,'^SELECT.*FOR UPDATE$',1000,1);
INSERT INTO mysql_query_rules(active,match_pattern,destination_hostgroup,apply)
VALUES(1,'^SELECT',100,1);
--load并在sqlite中保存上述修改。
load mysql query rules to runtime;
save mysql query rules to disk;
- 查看相关的统计信息
select * from stats_mysql_query_digest_reset;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Mysql:实现中位数算法
下一篇:MYSQL NULL值特性
- thinkphp5框架前后端分离项目实现分页功能的方法分析 2019-10-08
- 数据库读写分离提高性能详解,原理是什么 2019-08-26
- mysql读写分离在项目实践中的应用,干货 2019-08-23
- 流行的前后端分离,咱们来看看它的优缺点! 2019-08-23
- 谈谈我们为什么要前后端分离 2019-08-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash