本文目錄一覽:
如何動態監控mysql binlog
有兩種方法,一種方法使用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服務器必須沒有啟動!檢測修復所有數據庫(表)
如何有效的監控單點,集群的mysql
Mysql作為使用非常廣泛的數據庫,確實給我們帶來了很多幫助,就像任何軟件系統一樣,一旦正式投入生產環境,那監控手段就不可或缺。如何有效的監控Mysql的運行情況,尤其是在複雜IT環境下就更顯得迫切了,如Mysql集群部署; 1、單點Mysql的監控 到底一個Mysql服務我們應該監控哪些指標呢?每個人可能都有不同的見解,但下面這些指標是基本的: 當前已打開連接數:表示當前打開的數據庫連接; 啟動以來同時處理的最大連接數:表示自從數據庫啟動來同時處理的最大連接請求,這個值對於提供數據庫的處理能力比較重要,下面是兩個優化的量化經驗: 假設數值tmpPercent =啟動以來同時處理的最大連接數/ 設置的最大連接數 l 如果tmpPercent = 0.1,則mySQL服務器最大連接數設置的過高了 l 如果tmpPercent 90,則mySQL服務器最大連接數設置的過低了 鎖等待率:如果該值 0.02,則mySQL服務器需要等待的表鎖數有點多了, 如果當前數據庫表類型是MyISAM請最好換成InnoDB類型; 表掃描率:如果該值 4000,則mySQL進行了太多表掃描, 很有可能是索引沒建好, 增加read_buffer_size值會有一些好處, 但最好不要超過8MB; 北京運維技術出品的EOMP作為一個IT監控平台,提供了很多實用功能來幫助用戶有效的運維各種IT資源,下面我們就如何通過EOMP對mysqlt進行有效監控做一個詳細介紹: EOMP里mysql的詳細監控界面如下: 上圖中做標記的4個地方,都是EOMP反映給用戶的重要監控信息。同時EOMP還可以監控Mysql中的數據庫表信息,如下圖: 通過對這些關鍵指標進行閥值、故障通知等設置,就可以在嚴重問題出現前有效的進行處理。EOMP閥值的設置很簡單,在圖中任何一個做標記*的監控指標處或是文本框沒有灰掉的地方,點擊鼠標右鍵彈出菜單,進行相關設置,如我們想對‘正在使用的連接數’這個指標進行如下設置:在上午8:00-下午7:00間,任意5分鐘內,該指標至少有3次超過100,就發出問題級別的告警,並通過Email、手機短信等方式通知相關人員;下面是具體閥值和故障通知設置截圖: 並且如果‘正在使用的連接數’確實發生了故障,我們可以通過剛才彈出菜單中的‘歷史數據查詢’功能,對這個監控指標的所有歷史數據進行故障分析,下圖是一次查詢結果: 2、集群Mysql的監控 對於複雜的集群Mysql,就應該把它們通過某種方式放到一起來共同運維和監控,EOMP提供的‘視圖’功能,就能很好完成這個任務,下圖是EOMP一個簡單Mysql集群的‘監控視圖’: 上圖中,我們把集群的兩個Mysql服務放到一張視圖裡,同時把它們的一些關鍵監控指標也放到這張視圖裡,如響應時間、正在工作線程數等,通過這樣一張視圖,用戶可以把所有反映這個Mysql集群健康情況的監控信息都放到一起,這在很大程度上方便用戶的監控。 EOMP是以‘視圖’為其設計核心,所以它的視圖配置非常靈活,既可以是整個一個Mysql服務,也可以是某個Mysql服務的一個監控指標。越是複雜的監控要求,越是能體現出這種內在設計的靈活性。 ‘視圖’不僅僅是個展現的窗口,它是個監控實體,如下圖EOMP的首頁所示,任何故障信息都是以‘視圖’為載體的,這樣用戶在任何時候都可以看到自己能理解的監控信息,而不是什麼什麼設備或服務等。
用Mycat需要注意什麼
實習的時候,在一個項目當中,項目經理要求把原先的MySQL數據連接基於mycat來進行改造 。當時就在想MyCat是什麼東西?為什麼要用它呢?
*一、什麼是MyCat: MyCat是一個開源的分布式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N個小表,存儲在後端MySQL服務器里或者其他數據庫里。
MyCat發展到目前的版本,已經不是一個單純的MySQL代理了,它的後端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲。而在最終用戶看來,無論是那種存儲方式,在MyCat里,都是一個傳統的數據庫表,支持標準的SQL語句進行數據的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提升開發速度
二、那麼為什麼要用到MyCat呢?
*例如操作系統是對各類計算機硬件的抽象。那麼我們什麼時候需要抽象?假如只有一種硬件的時候,我們需要開發一個操作系統嗎? 再比如一個項目只需要一個人完成的時候不需要leader,但是當需要幾十人完成時,就應該有一個管理者,發揮溝通協調等作用,而這個管理者對於他的上層來說就是對項目組的抽象。 同樣的,當我們的應用只需要一台數據庫服務器的時候我們並不需要Mycat,而如果你需要分庫甚至分表,這時候應用要面對很多個數據庫的時候,這個時候就需要對數據庫層做一個抽象,來管理這些數據庫,而最上面的應用只需要面對一個數據庫層的抽象或者說數據庫中間件就好了,這就是Mycat的核心作用。 所以可以這樣理解:數據庫是對底層存儲文件的抽象,而Mycat是對數據庫的抽象。*
注意事項:
(1)、原始表的自增主鍵{AUTO_INCREMENT=1446}值,就是之前用掉的值,要去掉。新庫按照新的來
(2)、{CREATE TABLE IF NOT EXISTS `edu_impoverish` } 改成 {CREATE TABLE `edu_impoverish` (}。mycat沒有判斷是否存在的功能
(3)、DROP TABLE IF EXISTS `onlinenum`; 這種格式是支持的。
(4)、全局表,字典表:可能會在其他表中存有其id字段的值。所以這些表id也要導過來。
(5)、業務表的id最好也導入過來,避免重新生成導致關聯對不上的情況。
(6)、全局表、跨庫分表都要用全局序列。單庫單業務,不和其他關聯的表;可以用數據庫自帶的自增主鍵。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/196399.html