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
və
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.