mysql 記錄號 MySQL 簡單記錄訊號處理

2021-10-18 02:43:47 字數 2697 閱讀 7381

碼版本:5.7.29

簡單記錄訊號如何生效的。poll收到訊號後如何中斷後如何處理的,需要確認。

一初始化訊號處理方式,設定訊號的處理的處理方式,遮蔽某些訊號,並且繼承到子執行緒(pthread_sigmask),主要遮蔽的為sigterm、sigquit、sighup、sigtstp四個。其他訊號按照預設處理方式,但是處理前列印crash棧,handle_fatal_signal

對於siguser1 進行捕獲,處理函式為空empty_signal_handler

#0 my_init_signals () at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:2225

#1 0x00000000015fefc9 in mysqld_main (argc=79, ar**=0x2e22368) at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:4846

#2 0x0000000000e8795d in main (argc=4, ar**=0x7fffffffe538) at /home/mysql/soft/percona-server-5.7.29-32/sql/main.cc:32

二啟動訊號處理執行緒start_signal_handler執行緒呼叫函式為 signal_hand,

使用sigwait獲取未決訊號集合,如果為sigterm和sigquit,設定abort_loop= true;

並且傳送sigusr1個主線程,準備正常退出pthread_kill(main_thread_id, sigusr1)) //給主線程傳送sigusr1訊號

如果為sighup則過載一下reload_acl_and_cache相關快取。

start_signal_handler執行緒呼叫函式為 signal_hand

#0 start_signal_handler () at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:2301

#1 0x00000000015fff70 in mysqld_main (argc=79, ar**=0x2e22368) at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:5407

#2 0x0000000000e8795d in main (argc=4, ar**=0x7fffffffe538) at /home/mysql/soft/percona-server-5.7.29-32/sql/main.cc:32

三、如果為sigterm和sigquit,主線程(main)正在poll接受連線,收到了sigusr1 訊號後進行中斷處理,接下來進行判斷

全域性變數abort_loop,然後進入正常退出流程。

#0 empty_signal_handler (sig=32767) at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:2219

#1 #2 0x00007ffff5f20c3d in poll () from /lib64/libc.so.6

#3 0x00000000015ec077 in mysqld_socket_listener::listen_for_connection_event (this=0x35a76f0) at /home/mysql/soft/percona-server-5.7.29-32/sql/conn_handler/socket_connection.cc:883

#4 0x0000000001607542 in connection_acceptor::connection_event_loop (this=0x35a70e0)

at /home/mysql/soft/percona-server-5.7.29-32/sql/conn_handler/connection_acceptor.h:73

#5 0x00000000016001f2 in mysqld_main (argc=79, ar**=0x2e22368) at /home/mysql/soft/percona-server-5.7.29-32/sql/mysqld.cc:5513

#6 0x0000000000e8795d in main (argc=4, ar**=0x7fffffffe538) at /home/mysql/soft/percona-server-5.7.29-32/sql/main.cc:32

main thread

mysqld_socket_acceptor->connection_event_loop(); //監聽3306 埠

#endif /* _win32 */

server_operational_state= server_shutting_down; //這裡開始進行關閉處理

dbug_print("info", ("no longer listening for incoming connections"));

mysql_audit_notify(mysql_audit_server_shutdown_shutdown, mysqld_socket_listener::listen_for_connection_event

mysql_audit_server_shutdown_reason_shutdown,

mysqld_success_exit);

terminate_compress_gtid_table_thread();

mysql賦權的簡單記錄

怕自己以後忘記,寫在這裡當作備份 給某台電腦所有mysql操作許可權 grant all privileges on to wjs 192.168.100.209 identified by 123456 給任意一台電腦mysql增刪改查許可權 grant insert,update,delete,...

MYSQL觸發器簡單記錄

介紹 觸發器是與表有關的資料庫物件,指在insert update delete之前或之後,觸發並執行觸發器中定義的sql語句集合.觸發器的這種特性可以協助應用在資料庫端確保資料的完整性,日誌記錄,資料校驗等操作.觸發器型別 new 和 old 的使用 insert 型觸發器 new 表示將要或者已...

mysql 命令記錄 mysql命令記錄

慢查詢日誌記錄狀態 show variables like slow 查詢慢查詢日記記錄超時時間 show variables like long query time 設定慢查詢超時時間 set global long query time 1 設定慢查詢 set global slow quer...