使用ProxySql實現MySQL的讀寫分離

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-addressmysql-proxy-port配置 ProxySQL 監聽的 IP 地址和端口,比如監聽本機 3306 端口,可設置mysql-proxy-address=0.0.0.0mysql-proxy-port=3306?。
  • 管理接口配置:配置管理接口地址和端口,如admin-address=127.0.0.1admin-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.100MasterMySQL,ProxySQL
192.168.8.101SlaveMySQL

安裝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    #開啟調試模式
}

image-20240910171438970

?這些庫的含義:

  • main:內存配置數據庫。使用此數據庫,可以很容易地以自動化方式查詢和更新ProxySQL的配置。使用從內存中加載MYSQL用戶和類似命令,可以將存儲在此處的配置傳播到運行時ProxySQL使用的內存數據結構。
  • disk:"main"的基于磁盤的鏡像。在重新啟動過程中,“ main”不會保留,而是根據啟動標志以及磁盤上是否存在數據庫從“磁盤”數據庫或從配置文件加載。
  • stats:包含從代理的內部功能收集的運行時指標。指標示例包括每個查詢規則匹配的次數,當前正在運行的查詢等。
  • monitor:包含與ProxySQL連接的后端服務器相關的監視指標。度量標準示例包括連接到后端服務器或對其進行ping操作的最小和最大時間。

ProxySQL運行機制

  • runtime:運行中使用的配置文件
  • memory:提供用戶動態修改配置文件
  • disk:將修改的配置保存到磁盤SQLit表中(即:proxysql.db)

proxysql

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 的日志或配置文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92365.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92365.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92365.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WiFi 核心概念與實戰用例全解

📖 推薦閱讀:《Yocto項目實戰教程:高效定制嵌入式Linux系統》 🎥 更多學習視頻請關注 B 站:嵌入式Jerry 1. WiFi基礎與協議 WiFi(Wireless Fidelity)是基于IEEE 802.11協議族的無線局域網(WLAN…

面向遠程智能終端的超低延遲RTSP|RTMP視頻SDK架構與實踐指南

引言:遙操作時代,視覺鏈路已成“主控神經元” 從工業巡檢到應急救援,從城市安防到邊境監控,遠程操控正成為智能終端與人機協同的重要落點。而在這些場景中,“視覺”不再只是用來觀看的工具,而是貫穿感知、…

C++中的繼承:從基礎到復雜

目錄 前言 1. 繼承的基本概念 2. 繼承方式與訪問控制 3. 派生類與基類的對象轉換 4. 繼承中的作用域 5. 派生類的默認成員函數 6. 繼承中的特殊關系 6.1 繼承與友元 6.2 繼承與靜態成員 7. 復雜的菱形繼承問題 8. 繼承與組合的選擇 9. 常見面試題 總結 前言 繼承…

Eyevinn 徹底改變開源部署模式

該咨詢公司借助Akamai云平臺,為其創新的開源平臺和可持續收益分成模式提供強大支持。 "時間就是金錢,我們通過Akamai云平臺快速將開源云平臺投入生產。" ——Eyevinn Technology研發副總裁 Jonas Birm實現可持續視頻流媒體服務 自2013年以來&…

17day-人工智能-機器學習-分類算法-KNN

1. 什么是knn算法knn算法全名叫做k-近鄰算法(K-Nearest Neighbors,簡稱KNN),看到名字是不是能想到是算距離的,第一個k是指超參數的意思,就是可以認為設置的意思,這里是指最近的k個樣本。2. 為什…

12-netty基礎-手寫rpc-編解碼-04

netty系列文章: 01-netty基礎-socket02-netty基礎-java四種IO模型03-netty基礎-多路復用select、poll、epoll04-netty基礎-Reactor三種模型05-netty基礎-ByteBuf數據結構06-netty基礎-編碼解碼07-netty基礎-自定義編解碼器08-netty基礎-自定義序列化和反序列化09-n…

解決 Windows 下的“幽靈文件”——記一次與帶空格的 .gitignore 文件的艱難斗爭

引言 你是否遇到過這樣的情況:一個文件明明躺在你的文件夾里,ls 或 dir 命令都能清楚地看到它,但無論你用什么方法嘗試刪除,系統都冷酷地告訴你“找不到文件”? 就在今天,我就遇到了這樣一個“幽靈”般的 .…

(易視寶)易視TV is-E4-G-全志A20芯片-安卓4-燒寫卡刷工具及教程

(易視寶)易視TV is-E4-G-全志A20芯片-安卓4-燒寫卡刷工具及教程PhoenixCard_V309燒錄步驟:1、將TF或SD卡插入計算機,打開軟件;2、選擇固件所在目錄;3、燒寫模式選“卡量產”4、點擊“燒錄”開始量產&#x…

(數據結構)順序表實現-增刪查改

1.線性表 線性表(linear list)是n個具有相同特性的數據元素的有限序列。線性表是一種在實際中廣泛使用的數據結構,常見的線性表:順序表、鏈表、棧、隊列、字符串… 線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上并不一定是連續的,線性表在物理上存儲時…

【面試八股總結】線程/進程同步問題

一、同步與互斥 在線程并發執行的過程中,進程/線程之間存在協作的關系,例如有互斥、同步的關系。為了實現進程/線程間正確的協作,操作系統必須提供實現進程協作的措施和方法,主要的方法有兩種: 鎖:加鎖、解…

大語言模型提示工程與應用:提示工程入門指南

提示工程入門 學習目標 在本課程中,我們將學習提示工程。 相關知識點 提示工程 學習內容 1 提示工程 提示工程是一門新興學科,專注于設計和優化提示詞以高效利用語言模型完成多樣化任務。掌握提示工程能幫助開發者更深入理解大語言模型(LLM)的能力…

PostgreSQL 多級依賴血緣系統的設計與落地

一、業務背景:三類指標與四種狀態指標類型定義規則依賴關系原子指標單表聚合(SELECT WHERE GROUP)無派生指標在原子/派生指標上加 WHERE、改 GROUP依賴 1~N 個父指標復合指標多個原子/派生指標做加減運算依賴 1~N 個父指標狀態說明已保存草…

阿里云百煉平臺創建智能體-上傳文檔

整體思路是: 1創建ram用戶,授權 2上傳文件獲取FileSession 3調用智能體對話,傳入FileSession 接下來每個步驟的細節: 1官方不推薦使用超級管理員用戶獲得accessKeyId和accessKeySecret,所以登錄超級管理員賬號創建…

剪映里面導入多張照片,p圖后如何再導出多張照片?

剪映普通版本暫時沒發現可以批量導出圖片。這里采用其他方式實現。先整體導出視頻。這里前期要注意設置幀率,一張圖片的時長。 參考一下設置,幀率設置為30,圖片導入時長設置為1s,這樣的話,方便后期把視頻切割為單幀。導…

怎么查看Linux I2C總線掛載了那些設備?

1. 根據系統啟動查看設備樹節點文件&#xff08;系統運行后的&#xff09; 比如&#xff1a;要查看I2C2i2c2: i2cfeaa0000 {compatible "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";reg <0x0 0xfeaa0000 0x0 0x1000>;clocks <&cru CLK_…

bat腳本實現獲取非微軟官方服務列表

Get-CimInstance -ClassName Win32_Service |Where-Object { $_.State -eq Running -and $_.StartMode -ne Disabled } | ForEach-Object {$isMicrosoft $false$signerInfo 無可執行路徑if ($_.PathName) {# 提取可執行文件路徑&#xff08;處理帶引號/參數的路徑&#xff09…

小程序難調的組件

背景。做小程序用到了自定義表單。前后端都是分開寫的&#xff0c;沒有使用web-view。所以要做到功能對稱時間選擇器。需要區分datetime, year, day等類型使用uview組件較方便 <template><view class"u-date-picker" v-if"visible"><view c…

從零構建TransformerP2-新聞分類Demo

歡迎來到啾啾的博客&#x1f431;。 記錄學習點滴。分享工作思考和實用技巧&#xff0c;偶爾也分享一些雜談&#x1f4ac;。 有很多很多不足的地方&#xff0c;歡迎評論交流&#xff0c;感謝您的閱讀和評論&#x1f604;。 目錄引言1 一個完整的Transformer模型2 需要準備的“工…

qt qml實現電話簿 通訊錄

qml實現電話簿&#xff0c;基于github上開源代碼修改而來&#xff0c;增加了搜索和展開&#xff0c;效果如下 代碼如下 #include <QGuiApplication> #include <QQmlApplicationEngine>int main(int argc, char *argv[]) {QCoreApplication::setAttribute(Qt::AA_…

順序表——C語言

順序表實現代碼解析與學習筆記一、順序表基礎概念順序表是線性表的一種順序存儲結構&#xff0c;它使用一段連續的內存空間&#xff08;數組&#xff09;存儲數據元素&#xff0c;通過下標直接訪問元素&#xff0c;具有隨機訪問的特性。其核心特點是&#xff1a;元素在內存中連…