ProxySQL簡介
1、ProxySQL是一款開源的使用C++編寫的MySQL集群代理中間件;
2、用于在MySQL數據庫和客戶端之間進行負載均衡、查詢緩存、故障轉移和查詢分發;
3、它可以作為中間層插入到應用程序和數據庫之間;
4、特點是高效靈活,使用簡單,并且性能是所有中間件中比較優秀的。
5、在搭建好mysql的主從復制后,可以利用ProxySQL實現mysql數據庫的讀寫分離;
主要功能
ProxySQL主要支持MySQL的主從集群和組復制集群,其主要功能有以下幾個:
1、代理服務:代理后端MySQL服務,進行相關指標的監控
2、負載均衡:后端多節點的訪問進行負載均衡
3、高可用:自動識別異常節點,并屏蔽異常節點,保障集群的穩定
4、讀寫分離:自動動態的識別讀寫節點,轉發SQL至對應節點執行
5、數據分片:通過路由規則,進行SQL分發,達到數據分片的目的
使用原理
ProxySQL兼容MySQL協議,可以像連接MySQL一樣連接ProxySQL,執行簡單的SQL語句。
ProxySQL本身相關信息數據的存儲使用的是sqlite3,部分MySQL語句功能沒有完全兼容,所以通過 mysql client 可以正常連接并使用ProxySQL,如果通過dbeaver或者navicat等工具則無法正常使用。
當Proxysql啟動后,將監聽兩個端口:
admin管理接口,默認端口為6032。該端口用于查看、配置ProxySQL
接收SQL語句的接口,默認端口為6033,這個接口類似于MySQL的3306端口
讀寫分離是什么?
MySQL 讀寫分離是數據庫架構優化中常見的策略,核心目的是分散數據庫壓力、提升系統性能和可用性,具體原因如下:
1.?緩解主庫壓力,提升并發能力
- 讀寫請求特性不同:
業務中通常 “讀多寫少”(如電商商品詳情查詢遠多于下單修改庫存)。若讀寫都在同一數據庫(主庫),大量讀請求會占用 CPU、內存和 I/O 資源,導致寫請求(如訂單提交、數據更新)響應變慢,甚至阻塞。 - 分離后壓力分流:
寫操作(INSERT
/UPDATE
/DELETE
)僅在主庫執行,讀操作(SELECT
)分散到從庫,主庫無需處理大量讀請求,資源可集中用于處理寫事務,提升整體并發能力。
2.?提高數據可用性,降低單點風險
- 主從架構天然冗余:
讀寫分離依賴主從復制,主庫故障時,可將讀請求切換到從庫,甚至通過提升從庫為主庫快速恢復寫能力,避免單點故障導致整個系統不可用。 - 讀服務不依賴主庫:
即使主庫因寫操作壓力過大或臨時故障,從庫仍能提供讀服務,保證業務 “讀功能” 正常運行(如用戶仍能瀏覽商品、查詢歷史訂單)。
3.?優化查詢性能,提升用戶體驗
- 從庫可針對性優化:
從庫僅處理讀請求,可獨立配置優化參數(如增大?query_cache_size
、調整索引策略),甚至使用更高配置的硬件(如 SSD 提升讀 I/O),專門提升查詢速度。 - 就近訪問:
多從庫架構中,可將從庫部署在不同地域,讓用戶就近訪問讀庫,減少網絡延遲(如國內用戶訪問國內從庫,海外用戶訪問海外從庫)。
4.?便于數據備份和分析
- 從庫可承擔備份任務:
直接在主庫執行備份會消耗資源,影響業務;而從庫可在非高峰期執行備份(如?mysqldump
?或物理備份),不干擾主庫正常讀寫。 - 從庫用于數據分析:
數據分析(如報表生成、數據挖掘)通常需要執行復雜、耗時的查詢,在從庫執行可避免占用主庫資源,防止業務受影響。
主要步驟如下(大綱一個參考,下面有具體的配置,這里不要著急跟著做):
主庫ip:1.100
從庫ip:1.101
1. 安裝 ProxySQL
- 2. 配置 ProxySQL 的基本運行參數
ProxySQL 的配置文件默認是/etc/proxysql.cnf
?,主要配置項包括:
- 監聽地址和端口:通過
mysql-proxy-address
和mysql-proxy-port
配置 ProxySQL 監聽的 IP 地址和端口,比如監聽本機 3306 端口,可設置mysql-proxy-address=0.0.0.0
,mysql-proxy-port=3306
?。 - 管理接口配置:配置管理接口地址和端口,如
admin-address=127.0.0.1
,admin-port=6032
,用于通過 Admin 接口對 ProxySQL 進行配置管理。
3. 啟動 ProxySQL 服務
可以通過systemctl status proxysql
(或service proxysql status
?)檢查服務是否正常運行。
4. 連接到 ProxySQL 的管理接口
使用 MySQL 客戶端連接到 ProxySQL 的管理接口(默認端口 6032),例如:
mysql -uadmin -p -h 127.0.0.1 -P6032
首次登錄,密碼為空,登錄后可以修改密碼:
SET admin-admin_credentials='new_password';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
5. 配置后端 MySQL 服務器信息
- 添加 MySQL 服務器到主機組:
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (1, '192.168.1.100', 3306); -- 假設這是主庫,hostgroup_id設為1
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '192.168.1.101', 3306); -- 假設這是從庫,hostgroup_id設為2
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
- 設置負載均衡策略:可以通過
mysql_replication_hostgroups
表設置主從復制關系, - 告訴 ProxySQL 哪個是主庫主機組,哪個是從庫主機組:比如:
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup, comment) VALUES (1, 2, 'Main replication group');
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
6. 配置用戶
在 ProxySQL 中配置允許連接的用戶,這些用戶會被映射到后端 MySQL 服務器的用戶:
INSERT INTO mysql_users (username, password, default_hostgroup) VALUES ('app_user', 'password', 1); -- 假設應用用戶默認連主庫
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
7. 配置查詢規則
可以設置查詢路由規則,比如將讀請求路由到從庫,寫請求路由到主庫:
INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup, apply)
VALUES (1, 1, '^SELECT.*$', 2, 1);
-- 匹配SELECT開頭的查詢,路由到從庫(hostgroup_id 2)INSERT INTO mysql_query_rules (rule_id, active, match_digest, destination_hostgroup, apply)
VALUES (2, 1, '^(INSERT|UPDATE|DELETE).*$', 1, 1);-- 匹配增刪改,路由到主庫(hostgroup_id 1)LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
8. 測試 ProxySQL
使用應用程序或 MySQL 客戶端,通過 ProxySQL 的監聽地址和端口(如 3306 )連接,執行讀寫操作,檢查是否按照預期路由到后端 MySQL 服務器。
在實際生產環境中,還需要考慮監控 ProxySQL 的運行狀態(如連接數、查詢吞吐量等)、進行性能調優(如緩存配置、連接池大小調整 )以及高可用部署等方面。
實驗:使用ProxySql實現MySQL的讀寫分離
1、讀寫分離,簡單地說是把對數據庫的讀和寫操作分開,以對應不同的數據庫服務器;
2、主數據庫提供寫操作,從數據庫提供讀操作,這樣能有效地減輕單臺數據庫的壓力;
3、基于mysql主從復制,實現讀寫分離前需要先配置好主從復制。
IP | 角色 | 軟件 |
---|---|---|
192.168.8.100 | Master | MySQL,ProxySQL |
192.168.8.101 | Slave | MySQL |
安裝proxysql
CentOS7安裝proxysql
前提,你已經做完了主從復制!!!可以使用gtid這種類型的。
# 配置官方yum源,或直接下載rpm包(下載地址:https://github.com/sysown/proxysql/releases)
官網可以看安裝過程:https://proxysql.com/documentation/installing-proxysql/
這里baseurl我試了很多,因為有的不能用?不曉得,我把我試出來的一個我在用的寫上去了。
vim /etc/yum.repos.d/proxysql.repo
[proxysql_repo]
name=ProxySQL repository
baseurl=https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/centos/$releasever
gpgcheck=1
gpgkey=https://repo.proxysql.com/ProxySQL/proxysql-2.7.x/repo_pub_key
sslverify=false#yum安裝proxysql
yum clean all
yum makecache
yum install proxysql安裝如果報錯的話,你進/etc/yum.repos.d/proxysql.repo 這個配置文件里面 看一下是不是有東西不對的
Ubuntu22.04安裝proxysql
# ubuntu下添加源 可以直接復制 完成 不會報錯:apt install -y --no-install-recommends lsb-release wget apt-transport-https ca-certificates gnupgwget -O - 'https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/repo_pub_key' | apt-key add -
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.listwget -nv -O /etc/apt/trusted.gpg.d/proxysql-2.5.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.5.x/repo_pub_key.gpg'# 命令下載裝:
apt-get update
apt-get install proxysql
啟動proxysql服務并加入開機自啟通過管理界面配置ProxySQL
啟動proxysql服務并加入開機自啟
systemctl start proxysql
systemctl enable proxysql
通過管理界面配置ProxySQL
使用mysql客戶端,并使用以下admin憑據在本地端口(6032)上進行連接。默認賬號密碼admin:admin
mysql -u admin -padmin -h 127.0.0.1 -P 6032Admin> show databases;
如果登錄失敗
排錯
1.先看服務啟動了
沒檢查 ProxySQL 狀態:systemctl status proxysql
,若未啟動則啟動:systemctl start proxysql
。
2。端口 / IP 錯誤:
確認管理端口是否為?6032
(可在配置文件?/etc/proxysql.cnf
?中查看?admin-admin_credentials
?附近的配置),以及目標 IP 是否正確。
3.防火墻限制:
確保服務器防火墻允許?6032
?端口的連接(如?firewall-cmd --add-port=6032/tcp --permanent
?并重啟防火墻)。
4.密碼錯誤:
若修改過默認密碼,需用正確密碼登錄;若忘記密碼,可通過配置文件重置(修改?/etc/proxysql.cnf
?中?admin-admin_credentials
?字段,重啟服務生效)。
看配置文件內容,這里不需要更改
vim /etc/proxysql.cnfadmin_variables=
{admin_credentials="admin:admin" #定義管理端的登錄賬號密碼
# mysql_ifaces="127.0.0.1:6032;/tmp/proxysql_admin.sock" #管理端監聽的地址和端口mysql_ifaces="0.0.0.0:6032" #0.0.0.0 表示監聽服務器所有網卡的 6032 端口,允許外部機器通過 6032 端口連接管理端
# refresh_interval=2000 #若啟用,ProxySQL 會每隔 2000 毫秒(2 秒 )自動從數據庫 / 配置源同步配置
# debug=true #開啟調試模式
}
?這些庫的含義:
- main:內存配置數據庫。使用此數據庫,可以很容易地以自動化方式查詢和更新ProxySQL的配置。使用從內存中加載MYSQL用戶和類似命令,可以將存儲在此處的配置傳播到運行時ProxySQL使用的內存數據結構。
- disk:"main"的基于磁盤的鏡像。在重新啟動過程中,“ main”不會保留,而是根據啟動標志以及磁盤上是否存在數據庫從“磁盤”數據庫或從配置文件加載。
- stats:包含從代理的內部功能收集的運行時指標。指標示例包括每個查詢規則匹配的次數,當前正在運行的查詢等。
- monitor:包含與ProxySQL連接的后端服務器相關的監視指標。度量標準示例包括連接到后端服務器或對其進行ping操作的最小和最大時間。
ProxySQL運行機制
- runtime:運行中使用的配置文件
- memory:提供用戶動態修改配置文件
- disk:將修改的配置保存到磁盤SQLit表中(即:proxysql.db)
ProxySQL賬號
ProxySQL默認的管理員賬戶和密碼為admin:admin,但是這個默認的用戶只能在本地使用。如果想要遠程連接到ProxySQL,例如用windows上的navicat連接Linux上的ProxySQL管理接口,必須自定義一個管理員賬戶。
例如:添加一個root:root123
的用戶和密碼
Admin> select @@admin-admin_credentials; #查詢當前 ProxySQL 中配置的管理員認證憑據
+---------------------------+
|@@admin-admin_credentials |
+---------------------------+
|admin:admin |
+---------------------------+
1 row in set (0.001 sec)Admin> set admin-admin_credentials='admin:admin;root:root123';#修改管理員認證憑據,新增一組 root:root123 的賬號密碼。
Query OK, 1 row affected (0.000 sec)Admin> select @@admin-admin_credentials;
#再次查詢管理員認證憑據,確認修改是否生效
+---------------------------+
|@@admin-admin_credentials |
+---------------------------+
| admin:admin;root:root123 |
+---------------------------+
1 row in set (0.001 sec)Admin> load admin variables to runtime; # 使修改立即生效
Query OK, 0 rows affected (0.000 sec)Admin> save admin variables to disk; # 使修改永久保存到磁盤
Query OK, 35 rows affected (0.004 sec)
配置內容
使用proxysql,主要需要完成以下幾項內容的配置:
1、配置監控賬號。監控賬號用于檢測后端mysql實例是否健康(是否能連接、復制是否正常、復制是否有延遲等);
2、到后端mysql實例創建監控賬號;
3、配置后端mysql實例連接信息。實例連接信息存儲在mysql_servers表;
4、配置連接proxysql和后端實例的賬號。賬號信息存儲在mysql_users表;
5、配置查詢路由信息。路由信息存儲在mysql_query_rules表;
6、配置后端mysql集群信息。根據后端mysql集群架構,配置分別存儲在mysql_replication_hostgroups、mysql_group_replication_hostgroups、runtime_mysql_galera_hostgroups、runtime_mysql_aws_aurora_hostgroups等表中;
7、根據具體需要,調優相關參數。參數存儲在global_variables表;
1.在主節點的MySQL中創建監控用戶 在mysql中
CREATE USER 'monitor'@'%' IDENTIFIED BY 'monitor';
GRANT USAGE, REPLICATION CLIENT ON *.* TO 'monitor'@'%';在數據庫中創建一個用戶
用戶名:monitor
可連接主機:% 表示允許從任意主機連接(也可指定具體 IP,如 'monitor'@'192.168.1.%' 限制網段 )
密碼:monitor(用戶連接時需用該密碼認證 )給剛創建的 monitor 用戶授權
USAGE:是一種 “空權限”,表示該用戶有連接數據庫的基本權限(但無實際操作權限,常作為基礎授權,后續可疊加其他權限 )
REPLICATION CLIENT:允許該用戶執行與復制相關的操作(如 SHOW MASTER STATUS、SHOW SLAVE STATUS ,用于查看主從復制狀態 )
ON *.*:表示對所有數據庫(* 第一個 * )的所有表(第二個 * )生效,也可限定具體庫表(如 ON mydb.* 只對 mydb 庫授權 )
2.將監控用戶加入到proxysql中 在proxysql中
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';在 global_variables 表中,將名為 mysql-monitor-username 的變量值設置為 'monitor',即配置 ProxySQL 監控 MySQL 時使用的用戶名是 monitor。在 global_variables 表中,將名為 mysql-monitor-password 的變量值設置為 'monitor',即配置 ProxySQL 監控 MySQL 時使用的密碼是 monitor。在配置 ProxySQL 對后端 MySQL 服務器的監控機制,這么做的核心目的是讓 ProxySQL 能夠自動檢測后端 MySQL 節點的健康狀態和復制延遲,確保讀寫分離等功能可靠運行
3.將Master和slave節點添加到mysql_servers表中
注意:是在proxysql中操作
-- Master主節點
INSERT INTO mysql_servers(hostgroup_id,hostname,port,weight,comment) VALUES (1,'192.168.8.100',3306,1,'Write group');-- slave節點
INSERT INTO mysql_servers(hostgroup_id,hostname,port,weight,comment) VALUES (2,'192.168.8.101',3306,1,'Read group');-- 保存
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;如果你寫錯了你想刪掉
-- 查看所有節點,找到目標節點的標識(如 hostname、port、hostgroup_id)
SELECT * FROM mysql_servers;-- 精確篩選(例如刪除 hostgroup_id=2 中 IP 為 192.168.1.102 的節點)先找到這個單獨篩選出來
SELECT * FROM mysql_servers WHERE hostgroup_id=2 AND hostname='192.168.1.102';DELETE FROM mysql_servers WHERE 條件;-- 用查詢到的標識作為條件,確保只刪目標節點 條件就是上面那條命令的where后面的內容SELECT * FROM mysql_servers;
在查詢看是不是真的刪了
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
4.查看添加的mysql集群
SELECT * FROM mysql_servers;
如果這里的status不是online,那么就需要
排錯了
? ? ? ????????????????還是進入proxysql管理端
-- 1. 先確保配置表(disk 層)中該節點狀態正確(若之前被修改過)
UPDATE mysql_servers
SET status='ONLINE'
WHERE hostgroup_id=2 AND hostname='192.168.8.101' AND port=3306; (這里的ip是從服務端的ip)-- 2. 加載配置到運行時(覆蓋 runtime 層的 SHUNNED 狀態)
LOAD MYSQL SERVERS TO RUNTIME;-- 3. 持久化到磁盤(避免重啟后恢復為錯誤狀態)
SAVE MYSQL SERVERS TO DISK;二。看網絡是否通暢,防火墻也要關最后再檢查一下 SELECT * FROM mysql_servers;
都變成online就可以了
如果還是不行 可以考慮重啟一下服務,可能是因為有緩存
5.在MySQL主從節點上創建用戶,賦予權限,并將其存儲到代理服務器中。
主服務器和從服務器上都創用戶。
-- 在Master節點和slave節點上創建adm用戶,設置為管理員權限。
CREATE USER 'adm'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'adm'@'%';-- 在Master節點和slave節點上創建用戶read,并設置權限為只讀。
CREATE USER 'read'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON *.* TO 'read'@'%';
FLUSH PRIVILEGES;如果創建失敗,可能是你之前創過同名用戶,需要把用戶刪掉
drop user 'adm'@'%';
drop user 'read'@'%';
6.在proxysql上添加用戶
-- 在proxysql上添加用戶
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('adm','123456',1);
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('read','123456',2);-- 保存
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;select hostgroup_id, hostname, port,status from runtime_mysql_servers;在 ProxySQL 中注冊一個名為 read、密碼為 123456 的用戶,并指定其默認訪問的后端數據庫主機組為 ID 2。這樣,當客戶端使用 read 用戶通過 ProxySQL 連接數據庫時,ProxySQL 會默認將請求轉發到主機組 2 中的 MySQL 服務器(通常這類主機組可能由從庫組成,用于分擔讀壓力)
7.在proxysql上配置讀寫規則
參數介紹:
- rule_id為1,表示規則的唯一標識符。
- active為1,表示規則處于激活狀態。
- match_digest為'^SELECT.*FROM UPDATE$',表示匹配查詢語句,以SELECT開頭,中間可以有任意字符,以FROM UPDATE結尾。
- destination_hostgroup為1,表示匹配成功后,將查詢請求發送到hostgroup 1。
- apply為1,表示應用該規則。
INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply) VALUES (1,1,'^SELECT.*FROM UPDATE$',1,1);
INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply) VALUES (2,1,'^SELECT',2,1);
INSERT INTO mysql_query_rules (rule_id,active,match_digest,destination_hostgroup,apply) VALUES (3,1,'^SHOW',2,1);
-- 保存規則
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;
-- 查看規則
select rule_id,match_digest,destination_hostgroup,apply from mysql_query_rules order by rule_id;
8.測試能否正常讀取
直接在ProxySQL所在服務器的Linux命令行執行下列命令
mysql -uread -p123456 -h 127.0.0.1 -P6033 -e "SELECT @@hostname,@@port"# 在代理服務器上執行讀操作
mysql -uread -p123456 -h 127.0.0.1 -P6033 -e "show databases;"# 執行創建操作,測試效果
mysql -uadm -p123456 -h 127.0.0.1 -P6033 -e "create database test2;"# 再次查詢
mysql -uread -p123456 -h 127.0.0.1 -P6033 -e "show databases;"
在代理服務器中查詢執行記錄
# 可以看到proxysql將不同的請求分別發送給了不同的服務器處理,讀取發送給slave節點,寫入和刪除發送給Master節點。
-- 在proxysql服務器上執行
mysql -uadmin -padmin -h127.0.0.1 -P6032
select hostgroup,digest_text from stats_mysql_query_digest\G;## ProxySQL保存配置:-- 修改后重新加載服務并保存配置,防止重啟服務器后配置丟失。-- 重新加載并保存服務器設置
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;-- 重新加載并保存查詢設置
LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;-- 重新加載并保存用戶設置
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;-- 重新加載并保存變量設置
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
重置配置方法
如果你遇到 ProxySQL 配置錯誤,需要刪除或重置配置,通常可以按照以下步驟操作:
1. 刪除錯誤配置
1.連接到 ProxySQL 數據庫:
使用?mysql
?命令行工具或其他 MySQL 客戶端連接到 ProxySQL 實例。默認情況下,ProxySQL 的管理界面監聽在?3306
?端口(也可能是其他端口,取決于你的配置)。
mysql -u admin -p -h 127.0.0.1 -P 6032
這里?6032
?是 ProxySQL 默認的管理端口,admin
?是默認的管理用戶。
2.查看當前配置:?在管理控制臺中,你可以使用以下命令查看當前配置:
SELECT * FROM mysql_servers;
SELECT * FROM mysql_users;
3.刪除或修改錯誤配置:?假設你要刪除某個錯誤的服務器配置:
DELETE FROM mysql_servers WHERE hostname='錯誤的主機名';
對于用戶配置,可以用類似的方式刪除:
DELETE FROM mysql_users WHERE username='錯誤的用戶名';
4.應用更改:?刪除或修改配置后,記得應用更改到 ProxySQL 配置:
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
對于用戶配置:
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
2. 重置 ProxySQL 配置
方法一:可以執行初始化命令:
proxysql --initial
方法二:也可以刪除所有配置并重新加載:
1.刪除所有配置:
-- 刪除所有的 MySQL 服務器配置
DELETE FROM mysql_servers;-- 刪除所有的 MySQL 用戶配置
DELETE FROM mysql_users;-- 刪除所有的 MySQL 規則配置
DELETE FROM mysql_query_rules;-- 刪除所有的 MySQL 監控配置
DELETE FROM stats_mysql_status;
2.重新加載配置:
-- 將刪除的配置應用到運行時
LOAD MYSQL SERVERS TO RUNTIME;
LOAD MYSQL USERS TO RUNTIME;
LOAD MYSQL QUERY RULES TO RUNTIME;-- 將運行時配置保存到磁盤
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;
SAVE MYSQL QUERY RULES TO DISK;## 退出重啟服務
sudo systemctl restart proxysql
3. 其他檢查
確保 ProxySQL 配置文件(通常是?proxysql.cnf
)中沒有錯誤,并檢查任何可能的日志文件來確認問題的具體細節。
這些步驟應該能幫助你解決 ProxySQL 配置錯誤。如果問題依然存在,可能需要更詳細地檢查 ProxySQL 的日志或配置文檔。