有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
我們擁有10余年網頁設計和網站建設經驗,從網站策劃到網站制作,我們的網頁設計師為您提供的解決方案。為企業(yè)提供成都網站建設、成都做網站、微信開發(fā)、小程序開發(fā)、移動網站建設、HTML5、等業(yè)務。無論您有什么樣的網站設計或者設計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設計服務并滿足您的需求。
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類型的數據表。這兩條命令的主要參數相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發(fā)現某個數據表出現問題時可以使用:
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監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執(zhí)行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數據庫(表)
1、增加一個用戶同步使用的帳號:
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
賦予10.10.8.112也就是Slave機器有File權限,只賦予Slave機器有File權限還不行,還要給它REPLICATION SLAVE的權
限才可以。
2、增加一個數據庫作為同步數據庫:
create databbse test;
3、創(chuàng)建一個表結構:
create table mytest (username varchar(20),password varchar(20));
4、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置項中加入下面配置:
server-id = 1 #Server標識
log-bin
binlog-do-db=test #指定需要日志的數據庫
5、重起數據庫服務:
service mysqld restart
查看server-id:
show variable like ‘server_id’;
實例:
mysql show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
6、用show master status/G命令看日志情況。
正常為:
mysql show master status/G
工作原理:
利用特定的用戶定期訪問指定的mysql數據庫。當不能訪問或連不通時則報警。
1.在生產庫上安裝nagios插件
安裝略
備注:編譯完顯示一定要有mysql支持,不然沒有check_mysql插件
2.配置mysql
----建立nagdb專用數據庫
mysql create database nagdb default CHARSET=utf8;
Query OK, 1 row affected (0.01 sec)
mysql grant select on nagdb.* to 'nagios'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql update mysql.user set 'Password' = PASSWORD('nagios') where 'User'='nagios';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Password' = PASSWORD('nagios') where 'User'='nagios'' at line 1
mysql update mysql.user set Password = PASSWORD('nagios') where user='nagios';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
----用以下命令來驗證一下:
[root@node2 etc]# /usr/local/nagios/libexec/check_mysql -H 192.168.1.152 -u nagios -d nagdb -p nagios
Uptime: 3374 Threads: 1 Questions: 11 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.003
備注:如果出現:/usr/local/nagios/libexec/check_mysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
請查看$MYSQL_HOME/lib
[root@node2 lib]# ln -s ./libmysqlclient.so.18.0.0 /usr/lib/libmysqlclient.so.18
3.配置nrpe.cfg
[root@node2 etc]# tail /usr/local/nagios/etc/nrpe.cfg
command[check_mysql]=/usr/local/nagios/libexec/check_mysql -H 192.168.1.152 -u nagios -d nagdb -p nagios //加入此行
4.配置nagios服務端
[root@node1 etc]# cat services.cfg //加入下面內容
define service{
use local-service
host_name node2
service_description mysql
check_command check_nrpe!check_mysql
notifications_enabled 1
}
5.重啟nrpe和服務端的nagios
首先介紹下 pt-stalk,它是 Percona-Toolkit 工具包中的一個工具,說起 PT 工具包大家都不陌生,平時常用的 pt-query-digest、 pt-online-schema-change 等工具都是出自于這個工具包,這里就不多介紹了。
pt-stalk 的主要功能是在出現問題時收集 OS 及 MySQL 的診斷信息,這其中包括:
1. OS 層面的 CPU、IO、內存、磁盤、網絡等信息;
2. MySQL 層面的行鎖等待、會話連接、主從復制,狀態(tài)參數等信息。
而且 pt-stalk 是一個 Shell腳本,對于我這種看不懂 perl 的人來說比較友好,腳本里面的監(jiān)控邏輯與監(jiān)控命令也可以拿來參考,用于構建自己的監(jiān)控體系。
三、使用
接著我們來看下如何使用這個工具。
pt-stalk 通常以后臺服務形式監(jiān)控 MySQL 并等待觸發(fā)條件,當觸發(fā)條件時收集相關診斷數據。
觸發(fā)條件相關的參數有以下幾個:
function:
°?默認為 status,代表監(jiān)控 SHOW GLOBAL STATUS 的輸出;
°?也可以設置為 processlist,代表監(jiān)控 show processlist 的輸出;
variable:
°?默認為 Threads_running,代表 監(jiān)控參數,根據上述監(jiān)控輸出指定具體的監(jiān)控項;
threshold:
°?默認為 25,代表 監(jiān)控閾值,監(jiān)控參數超過閾值,則滿足觸發(fā)條件;
°?監(jiān)控參數的值非數字時,需要配合 match 參數一起使用,如 processlist 的 state 列;
cycles:
°?默認為 5,表示連續(xù)觀察到五次滿足觸發(fā)條件時,才觸發(fā)收集;
連接參數:host、password、port、socket。
其他一些重要參數:
iterations:該參數指定 pt-stalk 在觸發(fā)收集幾次后退出,默認會一直運行。
run-time:觸發(fā)收集后,該參數指定收集多長時間的數據,默認 30 秒。
sleep:該參數指定在觸發(fā)收集后,sleep 多久后繼續(xù)監(jiān)控,默認 300 秒。
interval:指定狀態(tài)參數的檢查頻率,判斷是否需要觸發(fā)收集,默認 1 秒。
dest:監(jiān)控數據存放路徑,默認為 /var/lib/pt-stalk。
retention-time :監(jiān)控數據保留時長,默認 30 天。
daemonize:以后臺服務運行,默認不開啟。
log:后臺運行日志,默認為 /var/log/pt-stalk.log。
collect:觸發(fā)發(fā)生時收集診斷數據,默認開啟。
°?collect-gdb:收集 GDB 堆棧跟蹤,需要 gdb 工具。
°?collect-strace:收集跟蹤數據,需要 strace 工具。
°?collect-tcpdump:收集 tcpdump 數據,需要 tcpdump 工具。
網頁題目:滴滴夜鶯怎么監(jiān)控mysql 滴滴監(jiān)控設備
文章源于:http://bm7419.com/article44/dohgeee.html
成都網站建設公司_創(chuàng)新互聯,為您提供建站公司、面包屑導航、網站建設、外貿建站、網站排名、云服務器
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯