当前位置:   article > 正文

mysql代理中间件_MySQL中间件之ProxySQL安装部署篇

mysql代理中间件_MySQL中间件之ProxySQL安装部署篇

1.前言

最近和搞中间件的同事聊了聊,他感叹了几句,如今最大的难处在于中间件太多了,不知道用哪个。社区有几款不错的中间件,mycat算是影响力比较大的吧(以前听一位哥们儿说他认为mycat是java写的,效率很低,然后就对mycat狂轰滥炸),oneproxy是我们楼教主的扛鼎巨著,还有mariadb社区那个延迟开源的收费软件maxscale。好咯,今天我们不讲这些高大上的中间件,今天我们说的这个中间件是percona现在主推的一款中间件:ProxySQL。

可能很多同志没有听过ProxySQL,我们也很难在中文社区看到他的一些资料。首先我不得不说的是ProxySQL几个优点,首先它足够的轻量化,其次性能也足够满足常规需求。他可以干哪些事情呢,基本上社区中间件可以做的事情,它都可以做,什么读写分离啊,故障容错啊,分库分表啊。

2.安装部署

2.1安装包下载

安装包有两个地方可以下载,

percona站点:

github:

选择适合自己操作系统以及相关版本吧,这里我们选择ProxySQL-1.2.2-1.x86_64.rpm。rpm包直接装好了。

2.2安装

直接使用rpm安装即可:

[root@hpc01 ~]# rpm -ivh ProxySQL-1.2.2-1.x86_64.rpm

2.3启动ProxySQL

[root@hpc01 ~]# sudo service ProxySQL start

Starting ProxySQL: DONE!

2.4ProxySQL相关文件

[root@hpc01 ProxySQL]# pwd

/var/lib/ProxySQL

[root@hpc01 ProxySQL]# ls -l

total 604

-rw-------. 1 root root 32768 Dec 24 23:25 ProxySQL.db

-rw-------. 1 root root 571154 Dec 24 23:29 ProxySQL.log

-rw-r--r--. 1 root root 5 Dec 24 23:25 ProxySQL.pid

[root@hpc01 ProxySQL]# ls -l /etc/ProxySQL.cnf

-rw-------. 1 root root 3588 Aug 4 21:37 /etc/ProxySQL.cnf

ProxySQL.db是SQLITE的数据文件,Proxysql很多东西是存储在这个迷你数据库里面的。ProxySQL.log是日志文件,排查问题好地方。ProxySQL.pid这个pid文件不多说了。ProxySQL.cnf是ProxySQL的一些静态配置项,比如一些启动选项,sqlite的数据目录等等。

2.5 ProxySQL的相关进程

[root@hpc01 ProxySQL]# ps -ef|grep ProxySQL

root 1575 1 0 23:25 ? 00:00:00 ProxySQL -c /etc/ProxySQL.cnf -D /var/lib/ProxySQL

root 1576 1575 0 23:25 ? 00:00:02 ProxySQL -c /etc/ProxySQL.cnf -D /var/lib/ProxySQL

细心的同学可能发现了进程有些奇怪哦,1575的父进程号居然是1,1576的父进程号是1575,他们不就是父子关系咯。这是不是很熟悉呢,和MySQL的很相似,我们启动一个进程,然后fork出一个子进程,父进程负责监控子进程运行状况如果挂了则拉起来,子进程负责执行真正的任务。

3.登录ProxySQL

ProxySQL初体验,第一次登录中间件是不是好鸡冻。

使用MySQL客户端工具登录。

[MySQL@hpc01 ~]$ MySQL -u admin -padmin -h 127.0.0.1 -P6032

MySQL: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 0

Server version: 5.5.30 (ProxySQL Admin Module)

Copyright (c) 2009-2016 Percona LLC and/or its affiliates

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

admin@127.0.0.1 [(none)] 11:53:11>>>

很多同学可能已经蒙逼,这不是进入了MySQL数据库了吗?哈哈。笔者第一次玩这个的时候也陷入了这种尴尬的局面,以为特么的搞错了。其实这事ProxySQL作者的一番用意,他使用MySQL客户端作为用户和ProxySQL之间的交换工具,让MySQL的DBA有一种亲切感和熟悉感,我们做DBA的用起来上手更快,不用花时间学习,熟悉,适应,直接上手用。如果以上的prompt有点不一样,请设置环境变量

export MYSQL_PS1="\\u@\\h [\\d] \\r:\\m:\\s>>>"

既然使用MySQL客户端登录,那我们来尝试执行我们常用的MySQL命令,看看啥效果。

admin@127.0.0.1 [(none)] 11:58:13>>>show databases;

+-----+---------+-------------------------------+

| seq | name | file |

+-----+---------+-------------------------------+

| 0 | main | |

| 2 | disk | /var/lib/ProxySQL/ProxySQL.db |

| 3 | stats | |

| 4 | monitor | |

+-----+---------+-------------------------------+

4 rows in set (0.00 sec)

admin@127.0.0.1 [(none)] 11:58:18>>>show tables;

+--------------------------------------+

| tables |

+--------------------------------------+

| global_variables |

| MySQL_collations |

| MySQL_query_rules |

| MySQL_replication_hostgroups |

| MySQL_servers |

| MySQL_users |

| runtime_global_variables |

| runtime_MySQL_query_rules |

| runtime_MySQL_replication_hostgroups |

| runtime_MySQL_servers |

| runtime_scheduler |

| scheduler |

+--------------------------------------+

12 rows in set (0.00 sec)

admin@127.0.0.1 [(none)] 11:58:21>>>

厉害了,word哥。这些命令居然可以用,只是显示的东西有些不一样对吧。哈哈。里面这些配置什么的,详细信息我们后续再详细解释哦。

4.ProxySQL小试牛刀

ProxySQL既然是中间件嘛,就是我们访问数据库主机的一个代理嘛,这里我就给大家一个最简单的demo,我们不直接登录数据库,而是使用ProxySQL来登录数据库。

7330f934ed2dd3b7cfeec60261d93550.png

我们就在安装ProxySQL的本机上安装一个MySQL,然后通过ProxySQL来登录数据库。(很多同学可能不乐意,这有什么鸟用。可是同学,复杂总是从简单开始的嘛)

4.1 初始化数据库

/opt/percona-server-5.7.13-6/bin/MySQLd --initialize-insecure --basedir=/opt/percona-server-5.7.13-6 --datadir=/data/px_MySQL

4.2数据库配置文件

[MySQLd]

# server configuration

datadir=/data/px_MySQL

basedir=/opt/percona-server-5.7.13-6

port=24801

socket=/data/px_MySQL/px_MySQL.sock

server_id=1

gtid_mode=ON

enforce_gtid_consistency=ON

master_info_repository=TABLE

relay_log_info_repository=TABLE

binlog_checksum=NONE

log_slave_updates=ON

log_bin=binlog

binlog_format=ROW

gtid_mode = ON

enforce_gtid_consistency = 1

log_bin=/data/px_MySQL/MySQL-bin

relay-log=/data/px_MySQL/relay_binary_log

4.3启动数据库

./bin/MySQLd_safe --defaults-file=/data/conf/px_MySQL.cnf &

4.4 在数据库端创建监控ProxySQL的监控用户和业务用户

CREATE USER 'ProxySQL'@'%' IDENTIFIED BY 'ProxySQLPa55';

GRANT USAGE ON *.* TO 'ProxySQL'@'%';

CREATE USER 'sbuser'@'%' IDENTIFIED BY 'sbpass';

GRANT ALL ON * . * TO 'sbuser'@'%';

FLUSH PRIVILEGES;

注意:这是在MySQL数据库中执行的SQL命令

4.5ProxySQL配置

将数据库和数据库相关用户配置进ProxySQL。

这些命令是在ProxySQL中执行的。

INSERT INTO MySQL_servers(hostgroup_id, hostname, port) VALUES (0,'10.25.7.48',24801);

INSERT INTO MySQL_users(username,password,default_hostgroup) VALUES ('sbuser','sbpass',0);

UPDATE global_variables SET variable_value='ProxySQL' WHERE variable_name='MySQL-monitor_username';

UPDATE global_variables SET variable_value='ProxySQLPa55' WHERE variable_name='MySQL-monitor_password';

最后还要讲配置生效。下面命令也在ProxySQL中执行。

LOAD MYSQL SERVERS TO RUNTIME;

LOAD MYSQL USERS TO RUNTIME;

SAVEMYSQL SERVERS TO DISK;

SAVEMYSQL USERS TO DISK;

关于配置生效,后面详解,ProxySQL配置是三层架构。

4.6 通过ProxySQL登录MySQL

[MySQL@hpc01 ~]$ MySQL -u sbuser -psbpass -h 127.0.0.1 -P 6033 -e "select @@hostname"

MySQL: [Warning] Using a password on the command line interface can be insecure.

+------------+

| @@hostname |

+------------+

| hpc01 |

+------------+

[MySQL@hpc01 ~]$ MySQL -u sbuser -psbpass -h 127.0.0.1 -P 6033

MySQL: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.5.30 (ProxySQL)

Copyright (c) 2009-2016 Percona LLC and/or its affiliates

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

sbuser@127.0.0.1 [(none)] 12:26:14>>>show variables like '%port%';

+--------------------------+-------+

| Variable_name | Value |

+--------------------------+-------+

| extra_port | 0 |

| innodb_support_xa | ON |

| large_files_support | ON |

| port | 24801 |

| report_host | |

| report_password | |

| report_port | 24801 |

| report_user | |

| require_secure_transport | OFF |

+--------------------------+-------+

9 rows in set (0.01 sec)

厉害了,word哥。终于通过proxy登录数据库了,是不是有不一样的feel呢。哈哈。后面再续ProxySQL的其他特性,包括查询重写,读写分离,防火墙,query cache等功能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/230615
推荐阅读
相关标签
  

闽ICP备14008679号