ProxySQL源码安装
2020-12-21 15:20 宋海宾 阅读(1082) 评论(0) 收藏 举报01_ProxySQL安装
备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入
~
~
ProxySQL是被公认的功能强大的MySQL中间件之一,但官网视乎很低调;以至于没有清楚的说明它自己到底擅长什么....
于是,通过网上收集,大致列出ProxySQL主要功能:
- 读写分离
 - 数据库集群、分片(要写级多路由规则,相对繁琐)
 - 分库分表(要写级多路由规则,相对繁琐)
 - 主从切换
 - SQL审计
 - 连接池、多路复用
 - 负载均衡
 - 查询重写
 - 流量镜像
 - 自动重连
 - 自动下线
 - 高可用
 
~
~
一、安装ProxySQL
github地址:https://github.com/sysown/proxysql
~
~
方式1:通过yum安装(centos 6)
1、添加yum源
# cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name= ProxySQL YUM repository
#proxysql2.0版地址
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever
#proxysql1.4版本地址
#baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/\$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key
EOF
2、安装
# yum install proxysql OR yum install proxysql-version
~
~
方式2:源码安装(建议Centos 7.4及以上)
1 、解压源码包
# tar -zxvf proxysql-1.4.15.tar.gz
# cd proxysql-1.4.15
2、查看安装说明文档
# less INSTALL.md
3、根据INSTALL.md安装
# yum install automake bzip2 cmake make gcc-c++ gcc git openssl openssl-devel patch 
备注:需要保证gcc-c++版本足够新,不然编译有错。
# yum install perl-DBD-MySQL  ==>使用yum安装时用到了整个依赖包,这里也一起装了。
# make
# make install
4、加入环境变量
# vim /etc/profile
PROXYPATH=/usr/local/proxysql/usr/bin
export PATH=$PATH:$PROXYPATH
本人在Centos6.5和Centos 7.2上都没有安装成功!!最后使用了yum方式!这里按INSTALL.md编写的。
~
~
其他方式:
直接使用二进制包(percona版)
下载地址:
https://www.percona.com/downloads/proxysql/proxysql-1.4.12/binary/tarball/proxysql-1.4.12-Linux-centos6-x86_64.tar.gz
1、解压
# tar -zxvf proxysql-1.4.12-Linux-centos6-x86_64.tar.gz -C /usr/local/proxysql
# cd /usr/local/
# mv proxysql-1.4.12-Linux-x86_64 proxysql
# tree proxysql
proxysql
├── etc
│   ├── init.d
│   │   └── proxysql
│   ├── logrotate.d
│   │   └── proxysql-logrotate
│   ├── proxysql-admin.cnf
│   └── proxysql.cnf
├── tests
│   ├── async-slave-testsuite.bats
│   ├── desynced-host-testsuite.bats
│   ├── generic-test.bats
│   ├── host-priority-testsuite.bats
│   ├── loadbal-testsuite.bats
│   ├── proxysql-admin-testsuite.bats
│   ├── proxysql-admin-testsuite.sh
│   ├── test-common.bash
│   └── writer-is-reader-testsuite.bats
├── usr
│   └── bin
│       ├── proxysql
│       ├── proxysql-admin
│       ├── proxysql_galera_checker
│       ├── proxysql_node_monitor
│       └── proxysql-status
└── var
    └── lib
        └── proxysql
9 directories, 18 files
2、加入环境变量
# vim /etc/profile
PROXYPATH=/usr/local/proxysql/usr/bin
export PATH=$PATH:$PROXYPATH
~
~
二、安装结果验证
1、查看proxysql版本,验证命令
# proxysql --version
ProxySQL version 2.0.2-1-g533442f, codename Truls
备注:本次实验安装得是2.0.2版本
~
~
2、修改ProxySQL数据目录
说明:根据实际情况修改datadi路径,默认为/var/lib/proxysql。
1)修改proxysql.cnf
# cd /usr/local/proxysql/etc
# vim proxysql.cnf
datadir="/usr/local/proxysql/var/lib/proxysql"
2)修改proxysql-admin.cnf
# vim proxysql-admin.cnf
export PROXYSQL_DATADIR='/usr/local/proxysql/var/lib/proxysql'
备注:2.0版本中没有了这个配置文件。
~
~
3、启动/停止ProxySQL服务
启动
如果不使用/etc/init.d/proxysql服务脚本启动,则需要在启动前设置
ulimit -n 102400
ulimit -c 1073741824
即设置
vim /etc/security/limits.conf
proxysql soft nofile 102400
proxysql soft core   1073741824
# proxysql -c /usr/local/proxysql/etc/proxysql.cnf &
或
#service proxysql start
停止
# service proxysql stop
或
Admin> proxysql stop ;    -->停止提供服务,但进程还在。
重启
# service proxysql restart
或
Admin> proxysql restart ;
~
~
4、登录ProxySQL
使用mysql客户端连接proxysql,默认端口6032 默认用户名,密码都是 admin
# mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt 'Admin> '
注意:如果你使用的MySQL客户端版本为8.04及以后,连接时请添加参数项--default-auth=mysql_native_password
~
~
查看实例中的默认数据库:
Admin>SHOW DATABASES;
+-----+---------------+-------------------------------------+
| seq | name          | file                                |
+-----+---------------+-------------------------------------+
| 0   | main          |                                     |
| 2   | disk          | /var/lib/proxysql/proxysql.db       |
| 3   | stats         |                                     |
| 4   | monitor       |                                     |
| 5   | stats_history | /var/lib/proxysql/proxysql_stats.db |
+-----+---------------+-------------------------------------+
5 rows in set (0.00 sec)
Admin>show tables;
+--------------------------------------------+
| tables                                     |
+--------------------------------------------+
| global_variables                           |
| mysql_collations                           |
| mysql_galera_hostgroups                    |
| mysql_group_replication_hostgroups         |
| mysql_query_rules                          |
| mysql_query_rules_fast_routing             |
| mysql_replication_hostgroups               |
| mysql_servers                              |
| mysql_users                                |
| proxysql_servers                           |
| runtime_checksums_values                   |
| runtime_global_variables                   |
| runtime_mysql_galera_hostgroups            |
| runtime_mysql_group_replication_hostgroups |
| runtime_mysql_query_rules                  |
| runtime_mysql_query_rules_fast_routing     |
| runtime_mysql_replication_hostgroups       |
| runtime_mysql_servers                      |
| runtime_mysql_users                        |
| runtime_proxysql_servers                   |
| runtime_scheduler                          |
| scheduler                                  |
+--------------------------------------------+
22 rows in set (0.00 sec)
~
~
三、通过admin interface(管理接口)配置ProxySQL
配置ProxySQL首选的方式就是通过admin interface,它可以在线动态修改配置,并且不需要重启ProxySQL服务。
其次才是通过修改配置文件来调整。
~
~
这里大概的过一下配置文件相关内容:
1、datadir配置项
datadir==>指定ProxySQL服务的数据存放路径(字符串);
~
~
2、admin_variables配置项
admin_variables==>对应global_variables表中那些控制着admin interface的相关功能的全局参数项,也就是配置ProxySQL自己的连接信息;
# cat /usr/local/proxysql/etc/proxysql.cnf
admin_variables=
{
        admin_credentials="admin:admin"
        mysql_ifaces="0.0.0.0:6032"
}
~
~
3、mysql_variables配置项
mysql_variables==>对应global_variables表中那些控制着传入MySQL流的相关功能的全局参数项,也就是配置ProxySQL访问后端MySQL的设置 ;
# cat /usr/local/proxysql/etc/proxysql.cnf
mysql_variables=
{
        threads=4
        max_connections=2048
        default_query_delay=0
        default_query_timeout=36000000
        server_version="5.5.30"
        connect_timeout_server=3000
        .........
}
~
~
4、mysql_servers配置项
mysql_servers==>对应admin interface中mysql_servers表中的内容;它定义了后端MySQL服务的信息。
它需要以.cfg(配置文件)的格式来书写。
mysql_servers =
 (
 {
 address="127.0.0.1"
 port=3306
 hostgroup=0
 max_connections=200
 }
 )
~
~
5、mysql_users配置项
mysql_users==>对应admin interface中mysql_users表中的内容;它是控制哪些用户可用连入ProxySQL以及哪些用户可以访问
后端的MySQL服务。它需要以.cfg(配置文件)的格式来书写。
mysql_users:
 (
 {
 username = "root"
 password = "root"
 default_hostgroup = 0
 max_connections=1000
 default_schema="information_schema"
 active = 1
 }
 )
~
~
6、mysql_query_rules配置项
mysql_query_rules==>对应admin interface中mysql_query_rules表中的内容;用于定义对传入的MySQL流量进行分类和路由的规则。
建议根据查询来编写特定的规则,而不是下下面一样笼统的概括。
mysql_query_rules:
 (
 {
 rule_id=1
 active=1
 match_pattern="^SELECT .* FOR UPDATE$"
 destination_hostgroup=0
 apply=1
 },
 {
 rule_id=2
 active=1
 match_pattern="^SELECT"
 destination_hostgroup=1
 apply=1
 }
 )
~
~
完毕
                    
                
                
            
        
浙公网安备 33010602011771号