ProxySQL官档翻译__01_ProxySQL安装

01_ProxySQL安装

备注:文章编写时间201904-201905期间,后续官方在github的更新没有被写入

~
~
ProxySQL是被公认的功能强大的MySQL中间件之一,但官网视乎很低调;以至于没有清楚的说明它自己到底擅长什么....
于是,通过网上收集,大致列出ProxySQL主要功能:

  1. 读写分离
  2. 数据库集群、分片(要写级多路由规则,相对繁琐)
  3. 分库分表(要写级多路由规则,相对繁琐)
  4. 主从切换
  5. SQL审计
  6. 连接池、多路复用
  7. 负载均衡
  8. 查询重写
  9. 流量镜像
  10. 自动重连
  11. 自动下线
  12. 高可用

~
~

一、安装ProxySQL

官网:https://proxysql.com/

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
 }
 )

~
~

完毕!

猜你喜欢

转载自blog.51cto.com/4709096/2490793