ProxySQL官檔翻譯__01_ProxySQL安裝

01_ProxySQL安裝

備註:文章編寫時間201904-201905期間,後續官方在github的更新沒有被寫入node

~
~
ProxySQL是被公認的功能強大的MySQL中間件之一,但官網視乎很低調;以致於沒有清楚的說明它本身到底擅長什麼....
因而,經過網上收集,大體列出ProxySQL主要功能:mysql

  1. 讀寫分離
  2. 數據庫集羣、分片(要寫級多路由規則,相對繁瑣)
  3. 分庫分表(要寫級多路由規則,相對繁瑣)
  4. 主從切換
  5. SQL審計
  6. 鏈接池、多路複用
  7. 負載均衡
  8. 查詢重寫
  9. 流量鏡像
  10. 自動重連
  11. 自動下線
  12. 高可用

~
~c++

1、安裝ProxySQL

官網:https://proxysql.com/git

github地址:https://github.com/sysown/proxysql
~
~github

方式1:經過yum安裝(centos 6)

一、添加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

二、安裝

# yum install proxysql OR yum install proxysql-version

~
~sql

方式2:源碼安裝(建議Centos 7.4及以上)

1 、解壓源碼包

# tar -zxvf proxysql-1.4.15.tar.gz
# cd proxysql-1.4.15

二、查看安裝說明文檔

# less INSTALL.md

三、根據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

四、加入環境變量

# vim /etc/profile
PROXYPATH=/usr/local/proxysql/usr/bin
export PATH=$PATH:$PROXYPATH

本人在Centos6.5和Centos 7.2上都沒有安裝成功!!最後使用了yum方式!這裏按INSTALL.md編寫的。數據庫

~
~vim

其餘方式:

直接使用二進制包(percona版)後端

下載地址:
https://www.percona.com/downloads/proxysql/proxysql-1.4.12/binary/tarball/proxysql-1.4.12-Linux-centos6-x86_64.tar.gz

一、解壓

# 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

二、加入環境變量

# vim /etc/profile
PROXYPATH=/usr/local/proxysql/usr/bin
export PATH=$PATH:$PROXYPATH

~
~centos

2、安裝結果驗證

一、查看proxysql版本,驗證命令

# proxysql --version
ProxySQL version 2.0.2-1-g533442f, codename Truls
備註:本次實驗安裝得是2.0.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版本中沒有了這個配置文件。

~
~

三、啓動/中止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 ;

~
~

四、登陸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)

~
~

3、經過admin interface(管理接口)配置ProxySQL

配置ProxySQL首選的方式就是經過admin interface,它能夠在線動態修改配置,而且不須要重啓ProxySQL服務。
其次纔是經過修改配置文件來調整。

~
~
這裏大概的過一下配置文件相關內容:

一、datadir配置項

datadir==>指定ProxySQL服務的數據存放路徑(字符串);

~
~

二、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"
}

~
~

三、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
        .........
}

~
~

四、mysql_servers配置項

mysql_servers==>對應admin interface中mysql_servers表中的內容;它定義了後端MySQL服務的信息。
它須要以.cfg(配置文件)的格式來書寫。

mysql_servers =
 (
 {
 address="127.0.0.1"
 port=3306
 hostgroup=0
 max_connections=200
 }
 )

~
~

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

~
~

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

~
~

完畢!

相關文章
相關標籤/搜索