用Systemtap探索MySQL

2022-01-28 愛可生雲資料庫

在MySQL源碼dtrace.cmake中可以找到定義:

Check if OS supports DTraceMACRO(CHECK_DTRACE) FIND_PROGRAM(DTRACE dtrace) MARK_AS_ADVANCED(DTRACE) # On FreeBSD, dtrace does not handle userland tracing yet IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")   SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace") ENDIF()

可知Linux環境下,只要環境中存在dtrace就會開啟ENABLE_DTRACE。於是裝好systemtap-sdt-dev包,再進行cmake就可以了. 不需要額外的配置選項,也不需要開啟WITH_DEBUG。

(說明:按照手冊,systemtap-sdt-dev中的dtrace用於將file.d文件轉成頭文件參與編譯,並非真正的dtrace)

> apt-get install -sdt-dev> cmake -DBUILD_CONFIG=mysql_release -DDOWNLOAD_BOOST=1 -DDOWNLOAD_BOOST_TIMEOUT=3600 -DWITH_BOOST=/opt/boost -L .

檢查cmake的輸出變量 (輸出經過截斷):

...ENABLE_DTRACE:BOOL=ON...WITH_DEBUG:BOOL=OFF...

ENABLE_DTRACE編譯的MySQL支持mark觀測點 (輸出經過截斷):

> stap -L 'process("/usr/local/mysql/bin/mysqld").mark("*")'process("/usr/local/mysql/bin/mysqld").mark("command__done") $arg1:longprocess("/usr/local/mysql/bin/mysqld").mark("command__start") $arg1:long $arg2:long $arg3:long $arg4:longprocess("/usr/local/mysql/bin/mysqld").mark("connection__done") $arg1:long $arg2:long...process("/usr/local/mysql/bin/mysqld").mark("update__start") $arg1:long

相關焦點

  • 如何用 systemtap 排查問題
    有兩篇文章現在還記得,《Linux下如何知道文件被哪個進程寫》[1]和《巧用Systemtap注入延遲模擬IO設備抖動》[2],周末突然想起來,發現能看懂了:)本文雖然說是小技巧,可是難度一點也不低 ^_^什麼是 systemtapSystemtap is a tool that allows
  • 內核探測工具systemtap簡介
    之後內核引入了一種Kprobe機制,可以用來動態地收集調試和性能信息的工具,是一種非破壞性的工具,用戶可以用它跟蹤運行中內核任何函數或執行的指令等。相比之前的做法已經有了質的提高了,但Kprobe並沒有提供一種易用的框架,用戶需要自己去寫模塊,然後安裝,對用戶的要求還是蠻高的。
  • 內核調試神器SystemTap — 簡介與使用(一)
    (3) 獲取源碼git clone git://sourceware.org/git/systemtap.git安裝(1) Ubuntu發行版1. 安裝systemtap包apt-get install systemtap2.
  • Linu中SLUB的調試 [二] - 使用Systemtap
    之前的文章曾利用systemtap的"watchpoint"功能來監測變量數值的變化,但systemtap在內核debug中的應用遠不止此,本文將藉由對
  • 內核調試技巧 - systemtap定位丟包原因
    kfree_skb函數中已經埋下了trace點,並且通過__builtin_return_address(0)記錄下了調用kfree_skb的函數地址並傳給location參數,因此可以利用systemtap kernel.trace來跟蹤kfree_skb獲取丟包函數。考慮到該丟包函數可能調用了子函數,子函數繼續調用子子函數,如此遞歸。
  • [深度Linux系統]安裝資料庫MySQL和MySQL workbench
    一.安裝MySQL1.打開命令行 ALT+CTRL+T2.輸入sudo apt-get install mysql-server
  • 內核調試神器SystemTap — 更多功能與原理(三)
    更多信息:http://sourceware.org/systemtap/wiki/utrace需要:debugging information for the named programutrace support in the kernel (1) Begin/end
  • MySQL Cluster集群探索與實踐
    Mysql集群探索與實踐1.id=1hostname=192.168.207.153datadir=/home/taozi/mysql/mysql-cluster[NDBD] #數據節點id=2hostname=192.168.208.3datadir=/home/taozi/mysql/data[NDBD] #數據節點id=3hostname=192.168.208.9datadir=/home/taozi/mysql
  • MySQL 的變量分類總結
    | VARIABLE_VALUE |++-+| AUTOMATIC_SP_PRIVILEGES | ON             |++-+1 row in set, 1 warning (0.00 sec) mysql>如果要區分系統變量是全局還是會話級別,可以用下面方式:mysql
  • Centos7.6安裝mysql
    在CentOS中默認安裝有MariaDB,而我們需要用的mysql,所有需要將其覆蓋掉,下面是安裝過程:1、下載並安裝MySQL
  • Percona MySQL Server 部署指南
    引擎專用(內部臨時磁碟表可能會用)read_buffer_size=1Mread_rnd_buffer_size=1M# MyiSAM 引擎專用(內部臨時磁碟表可能會用)key_buffer_size=32M# MyiSAM 引擎專用(內部臨時磁碟表可能會用)bulk_insert_buffer_size=16M# myisam_sort_buffer_size
  • 別再問我MySQL和Python怎麼操作MySQL了!
    rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
  • linux Mysql UDF 利用思路詳解
    在入侵滲透過程中經常會遇到一些孤立的mysql伺服器,或者是存在sql注入的web伺服器,可以執行我們的命令或者可以直接連接。windows環境中,如果有mysql用戶密碼,並且允許遠程連接,我們可以考慮用msf的mysql_payload,方便快捷,或者用udf的方式來進行操作,linux下面我們首選的就是udf了。不多廢話,進入正題。首先解決udf如何寫入的問題,一般mysql的udf函數我們會首選sqlmap自帶的幾個,但是作為一個so文件,如何寫入遠程伺服器的plugin目錄才是我們所要關注的。
  • 硬貨 | 如何用 tap/tun 設備編寫一個 ICMP 程序
    01 準備工作首先通過 modinfo tun 查看系統內核是否支持 tap/tun 設備驅動。上面只是加載了 tap/tun 模塊,要完成 tap/tun 的編碼,還需要有設備文件,運行命令:mknod /dev/net/tun c 10 200 這樣在 /dev/net 下就創建了一個名為 tun 的文件。
  • Windows/Linux/Mac系統下的MySQL安裝
    這裡以MySQL5.6的yum源為例來說明,安裝命令如下:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmsudo rpm -ivh mysql-community-release-el7-5.noarch.rpmyum install
  • MySQL日誌安全分析技巧
    /mysql.log';比如,當我訪問 /test.php?@192.168.204.1 on 103 Connect Access denied for user 'mysql'@'192.168.204.1' (using password: YES) 104 Connect mysql@192.168.204.1 on 104 Connect Access denied for user 'mysql'@'192.168.204.1
  • Galera for MySQL集群安裝手冊終極版
    2.3 MySQL初始化--①.初始化mysql# mysqld --initialize --②.查看默認密碼# grep 'temporary password' /var/log/mysqld.log--③.更改權限# chown -R mysql:mysql /var/lib/mysql--④.啟動mysql服務# service
  • 手把手教你如何在 Linux 安裝 MySQL 8 資料庫(圖文詳細教程)!
    下載並安裝 MySQL 官方的 Yum Repositorywget -i -c https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm使用上面的命令就直接下載了安裝用的Yum Repository
  • 小白都能懂的Mysql主從複製原理(原理+實操)
    (6)接著就開始安裝Mysql 8了,使用wget命令下載Mysql 8的repo源,並且執行安裝:wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpmsudo yum -
  • 第一次玩docker的體驗:從0搭建docker應用tomcat,mysql,redis
    下載安裝Linux Mint 20     不想安裝很多東西,希望開箱即用。Liunux Mint自帶工具包如jdk等。start docker.servicesystemctl stop docker.servicesystemctl restart docker.service安裝常見的docker應用   第一步:查找可以安裝的docker鏡像