percona-toolkit之pt-kill 杀掉mysql查询或连接的方法_MySQL
pt-kill 是一个非常简单的 杀mysql线程和查询的 工具。 主要是为了防止一些长的查询 长时间占用 系统资源,而对线上业务造成影响的情况。
主要作用:
从show processlist 中获取满足条件的连接或者从包含show processlist的文件中读取满足条件的连接并打印或者杀掉或者执行其他操作。
我们这里主要用来防止某些select操作时间过长,从而影响其他线上SQL。
安装:
安装percona-toolkit即可
使用范例:
pt-kill --log-dsn D=testdb,t=kill_log --create-log-table --host=host2 --user=root --password=root --port=3306 --busy-time=10 --print --kill-query --match-info "SELECT|select" --victims all
也可使用--config写配置文件:
pt-kill --config tmp.txt --log-dsn D=testdb,t=kill_log --create-log-table --match-info "SELECT|select" --victims all notes: --match-info 是区分大小写的,匹配SELECT也就意味着对select无法匹配,因此使用"SELECT|select"包含大小写 cat tmp.txt host=host2 user=root password=root port=3306 busy-time=10 print kill-query
该使用范例的作用:
如果不存在testdb.kill_log表,则创建该表,然后将所有pt-kill的操作记录到该表中。对所有查询时间超过10秒的SELECT语句进行print显示出来,同时会kill该query。
pt-kill 默认检查间隔为5秒
解释:
--log-dsn D=testdb,t=kill_log --create-log-table 是创建testdb.kill_log表,之后将pt-kill操作的日志记录在表中 --busy-time=10 执行时间超过10秒的 --print --kill-query 动作是 进行print和 kill query,除此之外的动作还有kill 连接:--kill --match-info 'SELECT|select' 只匹配SELECT 语句
其他一些重要的参数解释:
--interval 运行检查query的间隔,
--victim
oldest (默认值),只杀最老的查询(最先发起的)。这是防止被查杀是不是真的长时间运行的查询,他们只是长期等待。这种种匹配按时间查询,杀死一个时间最高值。
all 杀掉所有满足的线程
all-but-oldest 杀死所有,但最长的保留不杀
--busy-time 批次查询已运行的时间超过这个时间的线程;
--idle-time 杀掉sleep 了多少时间的连接线程,必须在--match-command sleep时才有效
接下来这一组参数,是针对show processlist中相应列的 忽略 或 匹配:
--ignore-command / --match-command (command有:Query、Sleep、Binlog Dump、Connect、Delayed insert、Execute、Fetch、Init DB、Kill、Prepare、 Processlist、Quit、Reset stmt、Table Dump) --ignore-db / --match-db --ignore-host / --match-host --ignore-info / --match-info (info则可以使用select、update、insert、delete来进行匹配,并可使用"|"进行多项匹配, 如"select|SELECT|delete|DELETE|update|UPDATE" --ignore-state / --match-state (state类型有:Locked、login、copy to tmp table、Copying to tmp table、Copying to tmp table on disk、Creating tmp table、executing、Reading from net、Sending data、Sorting for order、 Sorting result、Table lock、Updating) --ignore-user / --match-user Action: --kill 杀掉连接并且退出 --kill-query 只杀掉连接执行的语句,但是线程不会被终止 --print 打印满足条件的语句
使用感受:
本来是想用该工具 监控多个mysql实例 ,但是发现--host 只能填写一个,多写了也没作用。 所以 这个工具 起一个进程后,只能监控一个mysql实例, 这点有点不是太方便。个人感觉应该有方法能够实现 多实例监控和查杀的。 这里就没做深入研究了, 有知道的朋友,请留言哦。
以上就是percona-toolkit之pt-kill 杀掉mysql查询或连接的方法_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Big data structure processing skills: Chunking: Break down the data set and process it in chunks to reduce memory consumption. Generator: Generate data items one by one without loading the entire data set, suitable for unlimited data sets. Streaming: Read files or query results line by line, suitable for large files or remote data. External storage: For very large data sets, store the data in a database or NoSQL.

Backing up and restoring a MySQL database in PHP can be achieved by following these steps: Back up the database: Use the mysqldump command to dump the database into a SQL file. Restore database: Use the mysql command to restore the database from SQL files.

MySQL query performance can be optimized by building indexes that reduce lookup time from linear complexity to logarithmic complexity. Use PreparedStatements to prevent SQL injection and improve query performance. Limit query results and reduce the amount of data processed by the server. Optimize join queries, including using appropriate join types, creating indexes, and considering using subqueries. Analyze queries to identify bottlenecks; use caching to reduce database load; optimize PHP code to minimize overhead.

How to insert data into MySQL table? Connect to the database: Use mysqli to establish a connection to the database. Prepare the SQL query: Write an INSERT statement to specify the columns and values to be inserted. Execute query: Use the query() method to execute the insertion query. If successful, a confirmation message will be output.

Creating a MySQL table using PHP requires the following steps: Connect to the database. Create the database if it does not exist. Select a database. Create table. Execute the query. Close the connection.

To use MySQL stored procedures in PHP: Use PDO or the MySQLi extension to connect to a MySQL database. Prepare the statement to call the stored procedure. Execute the stored procedure. Process the result set (if the stored procedure returns results). Close the database connection.

One of the major changes introduced in MySQL 8.4 (the latest LTS release as of 2024) is that the "MySQL Native Password" plugin is no longer enabled by default. Further, MySQL 9.0 removes this plugin completely. This change affects PHP and other app

Oracle database and MySQL are both databases based on the relational model, but Oracle is superior in terms of compatibility, scalability, data types and security; while MySQL focuses on speed and flexibility and is more suitable for small to medium-sized data sets. . ① Oracle provides a wide range of data types, ② provides advanced security features, ③ is suitable for enterprise-level applications; ① MySQL supports NoSQL data types, ② has fewer security measures, and ③ is suitable for small to medium-sized applications.
