天天看點

mysql中open file or directory_Nagios監控mysql從庫報錯:libmysqlclient.so.18: cannot open shared object file...

做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下。

[[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 --help

check_mysql v2.0 (nagios-plugins 2.0)

Copyright (c) 1999-2014 Nagios Plugin Development Team

This program tests connections to a MySQL server

Usage:

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 use

of this software. To submit patches or suggest improvements, send email to

[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] ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 23

Server version: 5.6.12-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

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: NULL

Master_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: 0

1 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] ~]#