它適用於:mysql和mariadb、Percona Server
同時還能夠支持:AWS Aurora 和RDS、ClickHouse、Galera Cluster、Oracle NDB Cluster、SQLitemysql
Centos系統
添加源sql
cat <<EOF | tee /etc/yum.repos.d/proxysql.repo [proxysql_repo] name= ProxySQL YUM repository baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.0.x/centos/\$releasever gpgcheck=1 gpgkey=https://repo.proxysql.com/ProxySQL/repo_pub_key EOF
安裝proxysqlyum install proxysql -y
數據庫
啓動前,先將配置文件修改,修改以下後端
[root@MWF-DB-T01 ~]# egrep -v "^#|^$" /etc/proxysql.cnf datadir="/gwmfc/app/proxysql " errorlog="/var/log/proxysql/proxysql.log" admin_variables= { admin_credentials="admin-sql:admin-sql;sys-sql:sys-sql " mysql_ifaces="127.0.0.1:6032" } mysql_variables= { threads=4 max_connections=2048 default_query_delay=0 default_query_timeout=36000000 have_compress=true poll_timeout=2000 interfaces="0.0.0.0:6033" default_schema="information_schema" stacksize=1048576 server_version="8.0.19" connect_timeout_server=3000 monitor_username="monitor-sql" monitor_password="monitor-sql" monitor_history=600000 monitor_connect_interval=60000 monitor_ping_interval=10000 monitor_read_only_interval=1500 monitor_read_only_timeout=500 ping_interval_server_msec=120000 ping_timeout_server=500 commands_stats=true sessions_sort=true connect_retries_on_failure=10 } mysql_servers = ( ) mysql_users: ( ) mysql_query_rules: ( ) scheduler= ( ) mysql_replication_hostgroups= ( )
注意:黃色部分是修改後的
修改pid文件的路徑,文件/etc/systemd/system/proxysql.service
PIDFile=/data/proxysql/proxysql.pid
注意:配置文件和服務文件的修改是將/var/lib/proxysql的目錄不使用了,數據目錄放到了/data目錄下(pid也放到了這裏),日誌放到了/var/log下
須要提早建立好目錄centos
mkdir /var/log/proxysql / /gwmfc/app/proxysql -p chown -R proxysql.proxysql /var/log/proxysql /data/proxysql
啓動服務緩存
systemctl enable proxysql systemctl start proxysql
在講解配置時,先說一下配置層的架構(管理端口主要是更改配置的三層內容)
它一共由三層組成(runtime、memory、disk),以下圖
session
Runtime
顧名思義:運行層,它是真正跟客戶端交互層
特色:不能直接改變,它由工做線程控制的內存數據結構。
它共包含三種配置:global variables、組和後端服務列表、用戶列表數據結構
MEMORY
這一層:是放到內存的,它是可查看並編輯的,落地到數據表中
經過更新表內容就能夠實現MEMORY更新,重要表以下:
mysql_servers---proxysql鏈接的後端服務
mysql_users----鏈接proxysql使用的帳號和密碼(這個就是鏈接後端的帳號密碼)
mysql_query_rules----查詢規則列表(路由到不一樣的後端服務),這些規則也能重寫查詢甚至緩存查詢的結果。
global_variables-----全局變量,隨時能夠調整(只有加載到runtime纔會對工做線程生效)架構
注意:變動內存中的數據後,須要加載到runtime和disk中,詳見下面的文章管理端口裏有詳細方法。app
6032:管理端端口
6033:應用鏈接端口
管理端口做用:用於以上6類大功能的配置
應用鏈接端口:用於應用程序的鏈接
這裏重點述說一下管理端口配置
登陸命令
$ mysql -u admin-sql –padmin-sql -h 127.0.0.1 -P6032 --prompt='Admin> '
注意:mysql8.0.4及以上的客戶端在登陸時,請添加--default-auth=mysql_native_password
更改帳號密碼方式:它是以全局變量方式存儲set admin-admin_credentials = 'admin:admin;admin-psql:admin-psql';
#最好將admin帳號去掉,以防因proxysql有漏洞致使被黑
更改以後,執行以下命令:
load admin variables to runtime; save admin variables to disk;
NOTE:變動後的配置須要加載到不一樣的層,命令以下
注意:配置命令使用的是sqlite3的sql語法,跟mysql有些不同。例如:USE在sqlite3中沒有
有main/disk/stats/monitor/myhgm共計5個庫
各個庫說明
main:內存配置庫,執行的sql命令都是變動的它(除了save、load)。
disk:它是main的鏡像。
stats:包含runtime層的metrics(proxysql內部功能收集的),好比每一個規則匹配的次數統計,當前運行的查詢等等。
monitor:包含監控metrics(和所鏈接的後端服務有關),例如鏈接某一個後端服務的最大、最小時間(ping方式)
myhgm:這裏不說,只有開啓debug纔有。
關於庫中表的命令使用說明
注意:沒法用desc和show columns查看錶結構,只能經過show create(比較操蛋),例如查看mysql_servers表結構
登陸帳號:默認是兩個admin:admin(read&write) 和stats:stats(only read)
stats帳號用於監控(由admin-stats_credentials變量控制)
admin帳號用於配置(由admin-admin_credentials變量控制)
注意:
默認show tables;得到的結果是main庫的全部表
如何查看庫下有哪些表,例如查看stats庫下有哪些表admin>show tables from stats;
後端服務一共兩個庫(1主1從)
主庫:10.50.133.58
從庫:10.50.133.107
適用範圍:mysql、mariadb數據庫
兩張表:mysql_servers和mysql_replication_hostgroups(可選)
命令:
load mysql servers to runtime; save mysql servers to disk;
添加服務:
#添加主庫Admin>
insert into mysql_servers(hostname,comment) values('10.50.133.58','master');`<br/>#添加從庫<br/>
Admin>insert into mysql_servers(hostgroup_id,hostname,comment) values(1,'10.50.133.107','slave');`