MySQL Audit Pluginlər və server crash

MySQL-də aktivliyi audit etmək üçün lazım olan araşdırmaları etdikdən sonra
3 tanınmış Audit pluginin olduğunu öyrəndik:

1. MySQL Enterprise Audit (Official one from Oracle) – commercial
2. MariaDB audit plugin for MySQL (version 1.1.6) – free
3. McAfee MySQL audit  plugin – free

Dərhal sınamağa keçərkən 2-ci və 3-cü pluginlər MySQL 5.6.17 serverimi crash etdi.
Dolayısı ilə, production-da hər kimsə istifadə etmək istəsə etməsin.

İlk öncə MariaDB plugin-i sınayaq. Aşağıdakı linkdəki addımları etdikdən sonra:
SkySQL Tutorial about Plugin

MySQL 5.6.17 crash oldu.
Aşağıdakı statement-ləri run edərkən errorlar görəcik:

INSTALL PLUGIN server_audit SONAME 'server_audit.so';
ERROR 2013 (HY000): Lost connection to MySQL server during query

SET GLOBAL server_audit_logging=ON;
ERROR 2013 (HY000): Lost connection to MySQL server during query

Web Application tərəfdən isə, aşağıdakı error gəldi:

SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet',

Bu error bir neçə gün əvvəl Linux server-də disk full olduqdan sonra MySQL işini dayandıranda yaranan error mətni ilə eynidir. Bu barədə BUG kimi report vermişəm:
BUG: 72437

Mövzunun kritikliyi bundan ibarətdir ki, bu plugin-dən istifadə etməyə çalışarkən database serverimizi itiririk.
Error log-a nəzər yetirdikdə də görürük ki, crash recovery gedib.

Version: '5.6.17-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)
140430 11:21:52 server_audit: MariaDB Audit Plugin version 1.1.6 STARTED.
06:21:52 UTC - mysqld got signal 11 ;
.
.
.
Thread pointer: 0x18428270
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7f63a0d78e18 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x8d6475]
/usr/sbin/mysqld(handle_fatal_signal+0x4a4)[0x663084]
/lib64/libpthread.so.0[0x385780f500]
/lib64/libc.so.6[0x3a2173259f]
/usr/sbin/mysqld[0xabdd60]
/usr/sbin/mysqld[0xabe0a0]
/usr/lib64/mysql/plugin/server_audit.so(logger_open+0x10b)[0x7f639bdf806b]
/usr/lib64/mysql/plugin/server_audit.so(+0x4202)[0x7f639bdf8202]
/usr/lib64/mysql/plugin/server_audit.so(+0x5ccf)[0x7f639bdf9ccf]
/usr/sbin/mysqld(_Z23initialize_audit_pluginP13st_plugin_int+0x4d)[0x68f6ad]
/usr/sbin/mysqld[0x6ea481]
/usr/sbin/mysqld(_Z20mysql_install_pluginP3THDPK19st_mysql_lex_stringS3_+0x43f)[0x6eee7f]
/usr/sbin/mysqld(_Z21mysql_execute_commandP3THD+0xf04)[0x6deb14]
/usr/sbin/mysqld(_Z11mysql_parseP3THDPcjP12Parser_state+0x32f)[0x6e2b3f]
/usr/sbin/mysqld(_Z16dispatch_command19enum_server_commandP3THDPcj+0x140b)[0x6e403b]
/usr/sbin/mysqld(_Z24do_handle_one_connectionP3THD+0xcf)[0x6b0f3f]
/usr/sbin/mysqld(handle_one_connection+0x47)[0x6b1067]
/usr/sbin/mysqld(pfs_spawn_thread+0x12a)[0xabd8da]
/lib64/libpthread.so.0[0x3857807851]
/lib64/libc.so.6(clone+0x6d)[0x3a216e811d]
.
.
.
2014-04-30 11:21:54 19033 [Note] InnoDB: Starting crash recovery.
2014-04-30 11:21:54 19033 [Note] InnoDB: Reading tablespace information from the .ibd files...
2014-04-30 11:21:55 19033 [Note] InnoDB: Restoring possible half-written data pages
2014-04-30 11:21:55 19033 [Note] InnoDB: from the doublewrite buffer...
InnoDB: Doing recovery: scanned up to log sequence number 69056068973
InnoDB: Transaction 246648984 was in the XA prepared state.
InnoDB: 1 transaction(s) which must be rolled back or cleaned up
InnoDB: in total 0 row operations to undo
InnoDB: Trx id counter is 246649344
2014-04-30 11:21:55 19033 [Note] InnoDB: Starting an apply batch of log records to the database...
InnoDB: Progress in percent: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed

MariaDB plugini ilə bütün məsələlər aydın oldu.
İndi isə davam edək və McAfee Audit pluginin sınaqdan keçirək.
Aşağıdakı linkdə bütün lazımı prosedurlar və.s qeyd olunub:
McAfee Audit Plugin

Mən bu plugin haqqında da yüksək fikrə düşmədim çünki bu da mənim MySQL serverimi crash etdi və bu dəfə daha kritik oldu və server start belə olmadı.
Error log-a düşmüş məlumatı təqdim edirəm:

2014-04-30 19:00:48 14571 [Note] Audit Plugin: starting up. Version: 1.0.4 , Revision: 459 (64bit). AUDIT plugin interface version: 769 (0x301).
2014-04-30 19:00:48 14571 [Note] Audit Plugin: hot patch for: open_tables (0x69bd00) complete. Audit func: 0x7fb366fcad30, Trampoline address: 0x7fb366fcc060 size: 15.
2014-04-30 19:00:48 14571 [Note] Audit Plugin: Done initializing sql command names. status_vars_index: [141], com_status_vars: [0x1215400].
2014-04-30 19:00:48 14571 [Note] Audit Plugin: Init completed successfully.
2014-04-30 19:00:48 14571 [Note] Recovering after a crash using /var/lib/mysql/data/mysql-bin
2014-04-30 19:00:48 14571 [Note] Starting crash recovery...
2014-04-30 19:00:48 14571 [Note] Crash recovery finished.
2014-04-30 19:00:48 14571 [Note] Server hostname (bind-address): '*'; port: 3306
2014-04-30 19:00:48 14571 [Note] IPv6 is available.
2014-04-30 19:00:48 14571 [Note]   - '::' resolves to '::';
2014-04-30 19:00:48 14571 [Note] Server socket created on IP: '::'.
14:00:48 UTC - mysqld got signal 11 ;
Thread pointer: 0x26e2b70
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7fff90422a78 thread_stack 0x40000
/usr/sbin/mysqld(my_print_stacktrace+0x35)[0x8d6475]
/usr/sbin/mysqld(handle_fatal_signal+0x4a4)[0x663084]
/lib64/libpthread.so.0[0x35b6e0f710]
/usr/sbin/mysqld(_Z11open_tablesP3THDPP10TABLE_LISTPjjP19Prelocking_strategy+0x0)[0x69bd00]
/usr/sbin/mysqld(_Z20open_and_lock_tablesP3THDP10TABLE_LISTbjP19Prelocking_strategy+0x44)[0x69cb74]
/usr/sbin/mysqld(_Z10acl_reloadP3THD+0x28f)[0x67c9cf]
/usr/sbin/mysqld(_Z8acl_initb+0x120)[0x67e9d0]
/usr/sbin/mysqld(_Z11mysqld_mainiPPc+0xa26)[0x59fc96]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x35b6a1ed1d]
/usr/sbin/mysqld[0x591949]

Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0): is an invalid pointer
Connection ID (thread ID): 0
Status: NOT_KILLED

Gördüyümüz kimi, 3 plugin-dən 2-si 5.6.17 versiya MySQL-imizi crash etdi.
Dolayısı ilə Audit üçün 2 yol qaldı Trigger-lərdən istifadə və yaxud da pul verib rəsmi Oracle-ın pluginin almaq.
Təşəkkürlər.

Səs: +10. Bəyənilsin Zəifdir

Müəllif: Şəhriyar Rzayev

Şərh yazın