您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(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 為前綴的主要是與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' ;
其中包含訪(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)閉的
配置是相對(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)還是重要的,
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ì),下面的
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ù)獲取的麻煩.
上圖是通過(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 中可以通過(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;
或者統(tǒng)計(jì)當(dāng)前的與數(shù)據(jù)庫(kù)有關(guān)的賬戶(hù)連接的情況
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è)例子
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);
通過(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);
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);
這三者有什么關(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è)好方法.
今天就到此為止,但PROXYSQL 本身的功能是強(qiáng)大了,例如讀寫(xiě)分離, 以及控制讀寫(xiě)分離在主從延遲后的如何操作都有相關(guān)的設(shè)置。
關(guān)于MYSQL proxysql如何進(jìn)行信息獲取和信息輸出就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(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)容。