1. 程式人生 > >Nagios監控mysql從庫報錯 libmysqlclient so 18 cannot open shared

Nagios監控mysql從庫報錯 libmysqlclient so 18 cannot open shared

                做mysql的slave監控的時候,需要check_mysql指令碼,check的時候報錯:
 error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

1,錯誤資訊如下:
[[email protected] ~]# /usr/local/nagios/libexec/check_mysql -uadmin -P3306 -S /data/mbdata/open/mysql.sock -H127.0.0.1 -pxxxxx -d openshop -w 300 -c 360
/usr/local/nagios/libexec/check_mysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
[
[email protected]
~]#

2,執行check_mysql --help看下命令,發現也不行。
[[email protected] ~]# /usr/local/nagios/libexec/check_mysql --help/usr/local/nagios/libexec/check_mysql: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory[[email protected] ~]# 

3,檢視一下報錯的libmysqlclient.so.18檔案是否存在:
[[email protected] ~]# find / -name libmysqlclient.so.18
/mysql-5.6.12/libmysql/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18
檔案存在,但是無法識別。


4,可能是libmysqlclient的問題
搜尋mysqlclient library linkage problem。
找到文章地址:http://stackoverflow.com/questions/2080679/mysqlclient-library-linkage-problem
發現有/etc/ld.so.conf.d/mysql-x86_64.conf這樣一個配置檔案,開啟看看
cat /etc/ld.so.conf.d/mysql-x86_64.conf

[
[email protected]
~]# cat /etc/ld.so.conf.d/mysql-x86_64.conf
/usr/lib64/mysql

進入目錄/usr/lib64/mysql檢視下有什麼檔案:
[[email protected] ~]# ll /usr/lib64/mysql
總用量 3108
lrwxrwxrwx. 1 root root      26 9月  29 2013 libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
-rwxr-xr-x. 1 root root 1595176 12月  8 2012 libmysqlclient_r.so.16.0.0
lrwxrwxrwx. 1 root root      24 9月  29 2013 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
-rwxr-xr-x. 1 root root 1582952 12月  8 2012 libmysqlclient.so.16.0.0
有一些軟連線,而且帶了字尾表示so.16之類的,但是沒有so.18之類,看來是沒有連線到這裡,
可能是需要做一個軟連線把/usr/local/mysql/lib/libmysqlclient.so.18變成/usr/lib64/libmysqlclient.so.18,
馬上去做軟連線:ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18,然後再check下,check成功如下所示:


[[email protected] ~]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18[[email protected] ~]# [[email protected] ~]# [[email protected] ~]# /usr/local/nagios/libexec/check_mysql --helpcheck_mysql v2.0 (nagios-plugins 2.0)Copyright (c) 1999-2014 Nagios Plugin Development Team <[email protected]>This program tests connections to a MySQL serverUsage: check_mysql [-d database] [-H host] [-P port] [-s socket]       [-u user] [-p password] [-S] [-l] [-a cert] [-k key]       [-C ca-cert] [-D ca-dir] [-L ciphers] [-f optfile] [-g group]Options: -h, --help    Print detailed help screen -V, --version    Print version information --extra-opts=[section][@file]    Read options from an ini file. See    https://www.nagios-plugins.org/doc/extra-opts.html    for usage and examples...................................-l, --ssl    Use ssl encryptation -C, --ca-cert=STRING    Path to CA signing the cert -a, --cert=STRING    Path to SSL certificate -k, --key=STRING    Path to private SSL key -D, --ca-dir=STRING    Path to CA directory -L, --ciphers=STRING    List of valid SSL ciphers.................................................Send email to [email protected] if you have questions regarding useof this software. To submit patches or suggest improvements, send email [email protected][[email protected] ~]# 

5,繼續執行check_mysql來check一下
[[email protected] ~]# /usr/local/nagios/libexec/check_mysql -unagios -P3306 -S -H127.0.0.1 --password='[email protected]' /usr/local/mysql/mysql.sock -d test -w 60 -c 100
slave query error: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
[[email protected] ~]# 
報賬號錯誤,
check
slave query error: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
賬號錯誤,進入mysql介面賦予nagios賬號許可權
mysql> GRANT PROCESS, SUPER, REPLICATION CLIENT ON *.* TO [email protected]'%' identified by '[email protected]';

6,再check
[[email protected] ~]# /usr/local/nagios/libexec/check_mysql -unagios -P3306 -S -Hlocalhost --password='[email protected]' -s /usr/local/mysql/mysql.sock -d test -w 60 -c 100
Slave IO: Yes Slave SQL: No Seconds Behind Master: (null)

mysql slave 檢測失敗,有錯誤資訊:Slave IO: Yes Slave SQL: No Seconds Behind Master: (null)

進mysql視窗去看詳細資訊

[[email protected] ~]# mysqlWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 23Server version: 5.6.12-log Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show slave status\G*************************** 1. row ***************************               Slave_IO_State: Waiting for master to send event                  Master_Host: 10.xx.3.xx                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysql-bin.010294          Read_Master_Log_Pos: 21764               Relay_Log_File: mysql-relay-bin.003125                Relay_Log_Pos: 91805        Relay_Master_Log_File: mysql-bin.010275             Slave_IO_Running: Yes            Slave_SQL_Running: No              Replicate_Do_DB: xx,xx_db,xxsystem          Replicate_Ignore_DB:            Replicate_Do_Table:        Replicate_Ignore_Table:       Replicate_Wild_Do_Table:   Replicate_Wild_Ignore_Table:                    Last_Errno: 1590                   Last_Error: The incident LOST_EVENTS occured on the master. Message: error writing to the binary log                 Skip_Counter: 0          Exec_Master_Log_Pos: 91642              Relay_Log_Space: 1780004              Until_Condition: None               Until_Log_File:                 Until_Log_Pos: 0           Master_SSL_Allowed: No           Master_SSL_CA_File:            Master_SSL_CA_Path:               Master_SSL_Cert:             Master_SSL_Cipher:                Master_SSL_Key:         Seconds_Behind_Master: NULLMaster_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:                Last_SQL_Errno: 1590               Last_SQL_Error: The incident LOST_EVENTS occured on the master. Message: error writing to the binary log  Replicate_Ignore_Server_Ids:              Master_Server_Id: 71                  Master_UUID: 9b0dcf62-29f4-11e3-9471-677b33903869             Master_Info_File: mysql.slave_master_info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State:            Master_Retry_Count: 86400                  Master_Bind:       Last_IO_Error_Timestamp:      Last_SQL_Error_Timestamp: 140512 11:29:54               Master_SSL_Crl:            Master_SSL_Crlpath:            Retrieved_Gtid_Set:             Executed_Gtid_Set:                 Auto_Position: 01 row in set (0.00 sec)mysql> 

關於Slave IO: Yes Slave SQL: No Seconds Behind Master: (null),參考blog:  http://blog.csdn.net/mchdba/article/details/25738991

7,slave重做之後,再check,slave狀態是正常的。

# /usr/local/nagios/libexec/check_mysql -unagios -P3306 -S -s /usr/local/mysql/mysql.sock -Hlocalhost --password='[email protected]' -d test -w 60 -c 100 

[[email protected] ~]# /usr/local/nagios/libexec/check_mysql -unagios -P3306 -S -s /usr/local/mysql/mysql.sock -Hlocalhost --password='[email protected]' -d test -w 60 -c 100 Uptime: 18431321  Threads: 3  Questions: 1447646  Slow queries: 735  Opens: 18605  Flush tables: 1  Open tables: 214  Queries per second avg: 0.078 Slave IO: Yes Slave SQL: Yes Seconds Behind Master: 0|Connections=1380c;;; Open_files=32;;; Open_tables=214;;; Qcache_free_memory=66980240;;; Qcache_hits=778c;;; Qcache_inserts=5338c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=12516c;;; Qcache_queries_in_cache=34;;; Queries=1447647c;;; Questions=99727c;;; Table_locks_waited=0c;;; Threads_connected=1;;; Threads_running=1;;; Uptime=18431321c;;; 'seconds behind master'=0.000000s;60.000000;100.000000;[[email protected] ~]#