重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
你好,是要監控SQLServer服務嗎?首先錄制腳本,設計好場景;然后在設置場景的頁面中有RUN面板,面板里有AvailableGraphs在里面選擇DatebaseServerResourceGraphs,再選擇SQLServer(雙擊),這時候sqlserver的面板就會出現在可是monitors里,然后選中面板右鍵,選擇AddMeasurements-進入后點擊Add輸入你數據庫服務器的信息,進行連接;連接成功后,需要選擇相應的計數器,關注你們的計數器…
我們提供的服務有:網站制作、做網站、微信公眾號開發、網站優化、網站認證、德清ssl等。為超過千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的德清網站制作公司
一,獲取mysql用戶下的進程總數
ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1
二,主機性能狀態
# uptime
[root@ ~]# uptime
13:05:52 up 53 days, 52 min, 1 user, load average: 0.00, 0.00, 0.00
三,CPU使用率
# top
或
# vmstat
四,磁盤IO量
# vmstat 或 # iostat
五,swap進出量[內存]
# free
六,數據庫性能狀態
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql show /*50000 global */ status like 'Question';
(2)TPS(每秒事務量)
TPS = (Com_commit + Com_rollback) / seconds
mysql show status like 'Com_commit';
mysql show status like 'Com_rollback';
(3)key Buffer 命中率
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
mysql show status like 'Key%';
(4)InnoDB Buffer命中率
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
mysql show status like 'innodb_buffer_pool_read%';
(5)Query Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
mysql show status like 'Qcache%';
(6)Table Cache狀態量
mysql show status like 'open%';
(7)Thread Cache 命中率
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
mysql show status like 'Thread%';
mysql show status like 'Connections';
(8)鎖定狀態
mysql show status like '%lock%';
(9)復制延時量
mysql show slave status
(10) Tmp Table 狀況(臨時表狀況)
mysql show status like 'Create_tmp%';
(11) Binlog Cache 使用狀況
mysql show status like 'Binlog_cache%';
(12) Innodb_log_waits 量
mysql show status like 'innodb_log_waits';
當然你也可以使用一下開源監控軟件進行監控
一,RRDTool
二,Nagios
三,MRTG
四,Cacti
Online DDL 工具:pt-osc
對于 MySQL Online DDL 目前主流的有三種工具:
原生 Online DDL;
pt-osc(online-schema-change),
gh-ost
本文主要講解 pt-online-schema-change 的使用以及三種工具的簡單對比。
一、原理及限制
1.1 原理
1.?創建一個與原表結構相同的空表,表名是?_new?后綴;
2. 修改步驟 1 創建的空表的表結構;
3. 在原表上加三個觸發器:delete/update/insert,用于 copy 數據過程中,將原表中要執行的語句在新表中執行;
4. 將原表數據以數據塊(chunk)的形式 copy 到新表;
5. rename 原表為 old 表,并把新表 rename 為原表名,然后刪除舊表;
6. 刪除觸發器。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數據表,而isamchk適用于ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關于myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數據庫(表)
general_log=[on|off] #是否啟用通用查詢日志
general_log_file[=filename] #通用查詢日志位置及名字
這2個參數可以開啟mysql通用日志,里面記錄了你執行過的語句
應該對你有用。但是開啟后,日志增長會非常快
用 pt-table-checksum 時,會不會影響業務性能?
實驗
實驗開始前,給大家分享一個小經驗:任何性能評估,不要相信別人的評測結果,要在自己的環境上測試,并(大概)知曉原理。
我們先建一對主從:
然后用 mysqlslap跑一個持續的壓力:
開另外一個會話,將 master 上的 general log 打開:
然后通過 pt-table-checksum 進行一次比較:
查看 master 的 general log,由于 mysqlslap 的影響,general log 中有很多內容,我們找到與 pt-table-checksum 相關的線程:
將該線程的操作單獨列出來:
操作比較多,我們一點一點來說明:
這里工具調小了 innodb 鎖等待時間。使得之后的操作,只要在 innodb 上稍微有鎖等待,就會馬上放棄操作,對業務影響很小。
另外工具調小了 wait_timeout 時間,倒是沒有特別的作用。
工具將隔離級別調整為了 RR 級別,事務的維護代價會比 RC 要高,不過后面我們會看到工具使用的每個事務都很小,加上之前提到 innodb 鎖等待時間調到很小,對線上業務產生的成本比較小。
RR 級別是數據對比的基本要求。
工具通過一系列操作,了解表的概況。工具是一個數據塊一個數據塊進行校驗,這里獲取了第一個數據塊的下邊界。
接下來工具獲取了下一個數據塊的下邊界,每個 SQL前都會 EXPLAIN 一下,看一下執行成本,非常小心翼翼。
之后工具獲取了一個數據塊的 checksum,這個數據塊不大,如果跟業務流量有沖突,會馬上出發 innodb 的鎖超時,立刻退讓。
以上是 pt-table-checksum 的一些設計,可以看到這幾處都是精心維護了業務流量不受影響。
工具還設計了其他的一些機制保障業務流量,比如參數 --max-load 和 --pause-file 等,還有精心設計的數據塊劃分方法,索引選擇方法等。大家根據自己的情況配合使用即可達到很好的效果。
總結
本期我們介紹了簡單分析 pt-table-checksum 是否會影響業務流量,坊間會流傳工具的各種參數建議或者不建議使用,算命的情況比較多,大家都可以用簡單的實驗來分析其中機制。
還是那個觀點,性能測試不能相信道聽途說,得通過實驗去分析。