溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

發(fā)布時(shí)間:2021-10-25 10:16:24 來(lái)源:億速云 閱讀:175 作者:柒染 欄目:大數(shù)據(jù)

這篇文章將為大家詳細(xì)講解有關(guān)MYSQL proxysql如何進(jìn)行信息獲取和信息輸出,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

ProxySQL 前兩期針對(duì)不同的MYSQL高可用的方式來(lái)說(shuō)的, 本期會(huì)更加深入到PROXYSQL 的一些本身的東西.

在PROXYSQL 中有一個(gè)表,存儲(chǔ)了所有的global variables, 其中包含了大量的變量值.實(shí)際上,這些就是鍵值對(duì).  其中分為 MYSQL  為前綴的和 以 admin為前綴的兩個(gè)部分.

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

其中mysql 為前綴的主要是與MYSQL 有關(guān)的變量,

1 mysql-auditlog_filename  這個(gè)變量主要是建立一個(gè)auditlog , 給出相關(guān)路徑和文件名, 會(huì)在指定的位置生成audit log , audit log 主要是記錄與中間件proxysql 連接的賬號(hào),地址以及操作的數(shù)據(jù)庫(kù)對(duì)象, 使用json的格式.

update global_variables set variable_value = '/proxysql/log/audit.log' where variable_name = 'mysql-auditlog_filename' ;

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

其中包含訪(fǎng)問(wèn)的時(shí)間,數(shù)據(jù)庫(kù)賬號(hào),訪(fǎng)問(wèn)的源地址等等信息,基本上

2 記錄訪(fǎng)問(wèn)MYSQL中的一些訪(fǎng)問(wèn)的語(yǔ)句通過(guò)不同的條件來(lái)過(guò)濾

從proxysql 2.0.6 開(kāi)始可以記錄查詢(xún)中的相關(guān)的記錄, 默認(rèn)這個(gè)開(kāi)關(guān)是關(guān)閉的

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

配置是相對(duì)簡(jiǎn)單的,例如我們對(duì)某個(gè)應(yīng)用賬號(hào)的執(zhí)行的語(yǔ)句進(jìn)行監(jiān)控,則我們可以做以下工作.

SET mysql-eventslog_filename='queries.log';

SET mysql-eventslog_default_log=1;

INSERT INTO mysql_query_rules (rule_id, active,username, log,apply) VALUES (1,1,'contact',1,0);

SET mysql-eventslog_format=2;

SAVE MYSQL VARIABLES TO DISK;

LOAD MYSQL VARIABLES TO RUNTIME;

在操作完畢后,凡是 contact 賬號(hào)操作的語(yǔ)句會(huì)被記錄在queries.log 文件中

3  關(guān)于proxysql 的工作情況

雖然PROXYSQL 比較皮實(shí)耐用,但了解內(nèi)部的系統(tǒng)的一些運(yùn)行狀態(tài)還是重要的,

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

jemalloc_active 已經(jīng)分配給應(yīng)用的頁(yè)面

jemalloc_allocated  已經(jīng)分配給應(yīng)用的字節(jié)

jemalloc_metadata   元數(shù)據(jù)庫(kù)分配的內(nèi)存

Auth_memory 認(rèn)證模塊分配的內(nèi)存

SQLlite3_memory_bytes PROXYSQL 分配的內(nèi)存

query_digest_memory 上面剛剛提到的,對(duì)執(zhí)行的語(yǔ)句進(jìn)行過(guò)濾分配的內(nèi)存

ProxySQL  本身也對(duì)執(zhí)行的語(yǔ)句進(jìn)行一個(gè)統(tǒng)計(jì),下面的

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

select * from global_variables where variable_name = 'mysql-commands_stats'; 

默認(rèn)統(tǒng)計(jì)PROXYSQL 接受的語(yǔ)句,并根據(jù)語(yǔ)句的反饋進(jìn)行相關(guān)的統(tǒng)計(jì)

SELECT * FROM stats_mysql_commands_counters;

可以根據(jù)其中的已經(jīng)有的統(tǒng)計(jì)項(xiàng)對(duì)相關(guān)的命令進(jìn)行一個(gè)統(tǒng)計(jì), 這彌補(bǔ)了部分MYSQL方面的這部分的統(tǒng)計(jì)數(shù)據(jù)獲取的麻煩.

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

上圖是通過(guò)對(duì) stats_mysql_connection_pool 進(jìn)行訪(fǎng)問(wèn),得到當(dāng)前外部訪(fǎng)問(wèn)MYSQL 的狀態(tài), 這個(gè)表可以顯現(xiàn),當(dāng)前有多少連接針對(duì)指定的數(shù)據(jù)庫(kù)服務(wù)器,并且產(chǎn)生的queries  ,產(chǎn)生的數(shù)據(jù)發(fā)送bytes ,接受到的bytes 等等信息

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

在MYSQL 中可以通過(guò) show processlist 來(lái)查看當(dāng)前和MYSQL正在交互的session的清空, PROXYSQL 中也是提供 stats_mysql_processlist 對(duì)系統(tǒng)當(dāng)前連接進(jìn)來(lái)的連接進(jìn)行展示.

在MYSQL中5.7 已經(jīng)具備了追蹤歷史查詢(xún)的功能, proxysql 也提供了類(lèi)似的功能并且統(tǒng)計(jì)的信息會(huì)更全面提取更方便.

select * from stats_mysql_query_digest;

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

或者統(tǒng)計(jì)當(dāng)前的與數(shù)據(jù)庫(kù)有關(guān)的賬戶(hù)連接的情況

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

mysql 本身統(tǒng)計(jì)相關(guān)信息的方式也不少,但proxysql 將這些統(tǒng)計(jì)信息做的更好,并且提取時(shí)也不會(huì)和MYSQL 本身有沖突.

除此以外proxysql 也具備相關(guān)的豐富的日志記錄功能,在數(shù)據(jù)庫(kù)中有一個(gè)monitor 數(shù)據(jù)庫(kù),其中存儲(chǔ)著相關(guān)的監(jiān)控記錄, 以下舉幾個(gè)例子

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

1   如何判斷proxysql 和 數(shù)據(jù)庫(kù)服務(wù)器之間的網(wǎng)絡(luò)響應(yīng)的問(wèn)題

通過(guò)下面的語(yǔ)句

select * from mysql_server_ping_log where time_start_us in (select time_start_us from mysql_server_ping_log order by time_start_us desc limit 3);

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

通過(guò)遍歷最新的記錄,可以判斷數(shù)據(jù)庫(kù)和PROXYSQL的連通性和時(shí)間延遲,或者根本就無(wú)法連接的問(wèn)題。

2  PROXYSQL 與數(shù)據(jù)庫(kù)連接之間的時(shí)間

select * from mysql_server_connect_log where time_start_us in (select time_start_us from mysql_server_connect_log order by time_start_us desc limit 3);

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

3 判斷到底當(dāng)前主庫(kù)和從庫(kù)之間到底誰(shuí)是主誰(shuí)是從。

select hostname,time_start_us,success_time_us,read_only from mysql_server_read_only_log where time_start_us in (select time_start_us from mysql_server_read_only_log order by time_start_us desc limit 5);

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

這三者有什么關(guān)系,1 最基本的是中間件和數(shù)據(jù)庫(kù)之間是否連通,如果此處出現(xiàn)問(wèn)題,則表明中間件和數(shù)據(jù)庫(kù)之間的網(wǎng)絡(luò)或者連通的數(shù)據(jù)庫(kù)本身是否出現(xiàn)問(wèn)題,出現(xiàn)問(wèn)題就需要告警

2  此時(shí)與數(shù)據(jù)庫(kù)連接之間的問(wèn)題是1來(lái)判斷,而2 則是判斷PROXYSQL 與數(shù)據(jù)庫(kù)之間的連接的狀態(tài)的問(wèn)題,這里主要注意的是,連接的時(shí)間

3  則是判定數(shù)據(jù)流的目的地是哪里,整體的數(shù)據(jù)復(fù)制集合中,主庫(kù)是否存在通過(guò)這個(gè)日志可以判斷當(dāng)前的數(shù)據(jù)流的流向以及主從庫(kù)的狀態(tài)問(wèn)題。

所以完全可以通過(guò)PROXYSQL 來(lái)寫(xiě)一套程序來(lái)判斷當(dāng)前整體MYSQL復(fù)制集的狀態(tài)。

另外本身PROXYSQL 的stats_ 就可以通過(guò)MYSQL 協(xié)議來(lái)進(jìn)行各種狀態(tài)的獲取,并且一些開(kāi)源監(jiān)控軟件 PMM 也可以對(duì)其進(jìn)行監(jiān)控. PROXYSQL 也對(duì)監(jiān)控的方式提供了 WEB 方式,  提供的數(shù)據(jù)比較有限, 但在沒(méi)有其他方式的加持和對(duì)此進(jìn)行一個(gè)圖形監(jiān)控的時(shí)候,這個(gè)方式也是一個(gè)好方法.

MYSQL proxysql如何進(jìn)行信息獲取和信息輸出

今天就到此為止,但PROXYSQL 本身的功能是強(qiáng)大了,例如讀寫(xiě)分離, 以及控制讀寫(xiě)分離在主從延遲后的如何操作都有相關(guān)的設(shè)置。

關(guān)于MYSQL proxysql如何進(jìn)行信息獲取和信息輸出就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI