mysql常用脚本

持续更新

mysql查看事务

SELECT
    a.trx_id,
    a.trx_state,
    a.trx_started,
    a.trx_query,
    a.trx_weight,
    a.trx_lock_memory_bytes,
    b.ID,
    b.USER,
    b.DB,
    b.COMMAND,
    b.TIME,
    b.STATE,
    b.INFO,
    c.PROCESSLIST_USER,
    c.PROCESSLIST_HOST,
    c.PROCESSLIST_DB,
    d.SQL_TEXT
FROM
    information_schema.INNODB_TRX a
LEFT JOIN
    information_schema.PROCESSLIST b
ON
    a.trx_mysql_thread_id = b.id
LEFT JOIN
    PERFORMANCE_SCHEMA.threads c
ON
    b.id = c.PROCESSLIST_ID
LEFT JOIN
    PERFORMANCE_SCHEMA.events_statements_current d
ON
    d.THREAD_ID = c.THREAD_ID;

mysql开窗函数实现

求每个部门收入最高的员工

SELECT
    *
FROM
    (
        SELECT
            IF(@v_department_id=c.department_id,@rn:=@rn+1,@rn:=1) AS rn,
            @v_department_id:=                                        c.department_id,
            c.department_id,
            c.name,
            c.salary
        FROM
            (
                SELECT
                    b.DEPARTMENT_ID,
                    b.name,
                    SUM(b.SALARY) SALARY
                FROM
                    department a,
                    salary b
                WHERE
                    a.id = b.department_id
                GROUP BY
                    b.DEPARTMENT_ID,
                    b.name) c, (select @v_department_id:=-1) d
        ORDER BY
            c.department_id,
            c.salary DESC) d
WHERE
    d.rn=1;
//试验数据
CREATE TABLE department (id int, name varchar(100)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE salary (department_id int, name varchar(100), salary int) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO department (id, name) VALUES (1, '霸气的部门');
INSERT INTO department (id, name) VALUES (2, '牛皮的部门');
INSERT INTO department (id, name) VALUES (3, '最拽的部门');
INSERT INTO salary (department_id, name, salary) VALUES (1, 'Superman', 1000);
INSERT INTO salary (department_id, name, salary) VALUES (1, 'Superman', 2000);
INSERT INTO salary (department_id, name, salary) VALUES (1, 'spiderman', 3500);
INSERT INTO salary (department_id, name, salary) VALUES (1, 'hulk', 6000);
INSERT INTO salary (department_id, name, salary) VALUES (2, 'Jack', 5000);
INSERT INTO salary (department_id, name, salary) VALUES (2, 'Rose', 3000);
INSERT INTO salary (department_id, name, salary) VALUES (2, 'Tom', 4000);
INSERT INTO salary (department_id, name, salary) VALUES (3, 'Jerry', 2000);
INSERT INTO salary (department_id, name, salary) VALUES (3, 'Harry', 3000);

mysql查看配置参数

show variables like '%buffer%';

mysql查看当前正在使用的表

show open tables;

mysql查看引擎状态(包含最后一次死锁原因记录)

show engine innodb status

mysql查看当前进程

show processlist;(进程对应的sql可能显示不全)
show full processlist;(进程对应的sql可以显示全,内容可能会贼多)

mysql查看执行计划

explain select * from tableName;
desc select * from tableName;

mysql导出结构不包含数据

// 如果不指定表则代表导出整个库,表可以指定多个
mysqldump --skip-lock-table --no-data -hip -uuser -ppwd -Pport dbname tableName > dump.sql

mysql导出数据不包含结构

mysqldump --skip-lock-table --no-create-info --no-create-db -hip -uuser -ppwd -Pport dbname tableName > dump.sql

mysql查看建表语句

show create table filter_monitor

mysql创建、删除、查看索引

// 创建
ALTER TABLE table_name ADD INDEX index_name (column_list);
ALTER TABLE table_name ADD UNIQUE (column_list);
ALTER TABLE table_name ADD PRIMARY KEY (column_list);
CREATE INDEX index_name ON table_name (column_list);
CREATE UNIQUE INDEX index_name ON table_name (column_list);
CREATE TABLE `pack_group` (
  PRIMARY KEY (`id`),
  UNIQUE `idx_shop_beehive_packable_time` (`shop_id`,`beehive_id`,`packable_time`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分组状态表';
// 删除
DROP INDEX index_name ON talbe_name;
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE table_name DROP PRIMARY KEY;
// 查看
show index from tblname;
show keys from tblname;

mysql查看表碎片

如果索引的Cardinality属性与count(distinct字段)差别很大,说明碎片很多,需要整理,不然执行可能会很慢

select count(distinct columnName) from tableName;
show index from tableName;

mysql innodb引擎数据碎片整理

// 查看表的磁盘碎片,如果很多,则进行收集整理
alter table tableName engine=innodb;
analyze table tableName;(不会立即整理,会后台慢慢整理,不会阻塞当前会话)
optimize table tableName;(立即整理,阻塞当前会话,不可终止,如果终止可能会导致表数据文件损坏)

mysql 更改字段

alter table tableName modify `columnName` tinyint NOT NULL COMMENT '注释', modify ...;
ALTER TABLE tableName CHANGE oldColumnName newColumnName CHAR(32) NOT NULL DEFAULT '123';

mysql查看端口与版本号

show global variables like 'port';
show global variables like 'version';

mysql查看事务隔离级别

select @@global.tx_isolation;

清理binlog

# 指定某个binlog之前的日志删除
purge binary logs to 'binlog.000068';
# 按照时间删除binlog
purge binary logs before '2023-06-16 00:00:00';

重启服务

sudo /usr/local/mysql/support-files/mysql.server start
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server restart

修改root密码

# 正常模式下
ALTER USER 'root'@'localhost' IDENTIFIED BY '哈哈';
# skip-grant-tables 模式下报错
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
# 先执行
update user set authentication_string='' where user='root';
flush privileges;
# 停止mysql服务,取消skip-grant-tables配置,启动mysql服务后,root可以无密码登陆
# root登陆后修改root密码
ALTER USER 'root'@'%' IDENTIFIED BY 'haha';
flush privileges;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux中,MySQL巡检脚本是一种用于监视、诊断和优化MySQL服务器性能的工具。它可以帮助管理员定期检查和评估服务器的各个方面,确保其正常运行并提供最佳性能。 MySQL巡检脚本通常包括以下功能: 1. 监控MySQL服务器的状态:脚本可以检查数据库服务器的运行状态,并显示关键性能指标,如连接数、查询执行次数、缓存使用情况等。通过持续监控这些指标,管理员可以了解服务器的负载情况,及时采取措施优化性能。 2. 检查MySQL的配置:脚本可以检查MySQL配置文件,确保其与服务器硬件和操作系统的要求相匹配。它可以检查缓冲区大小、线程池设置、连接数量等配置参数,强调潜在的问题并提供修复建议。 3. 识别慢查询:脚本可以分析数据库日志,识别慢查询和高消耗的查询语句。这对于定位性能问题和优化查询非常重要。通过检查慢查询,可以发现导致性能瓶颈的查询语句,并提供优化建议。 4. 检查数据库备份和恢复:脚本可以确认数据库备份是否按计划执行,并检查备份的完整性。此外,它还可以评估数据库的恢复性能,以确保在故障发生时可以及时恢复数据。 5. 检查数据库安全性:脚本可以检查数据库的安全设置,比如弱密码、未授权访问等。它可以提示管理员采取相应的措施,以确保数据库的安全防护。 综上所述,MySQL巡检脚本能够帮助管理员对MySQL服务器进行全面的性能检查和优化,确保服务器的稳定性和可靠性。这也是Linux系统中常用的一种管理工具。 ### 回答2: Linux中MySQL巡检脚本是一种用于检查和监视MySQL数据库服务器的工具。巡检脚本可以通过定期运行,以提供数据库性能方面的报告和警告。 MySQL巡检脚本可以检查以下方面: 1. 数据库连接:脚本可以检查数据库服务器的连接数以及是否有空闲连接。如果连接数超过限制或没有足够的空闲连接可用,脚本可以发送警报。 2. 数据库存储空间:脚本可以检查数据库中表的大小和数据库磁盘空间的使用情况。如果数据库存储空间接近或超过限制,脚本可以发送警报。 3. 查询性能:脚本可以检查查询语句的执行时间和慢查询日志。它可以识别哪些查询可能导致性能瓶颈,并提出优化建议。 4. 数据库备份:脚本可以检查数据库备份的状态和过期情况。它可以警告如果备份失败或过期的备份。 5. MySQL服务器状态:脚本可以检查MySQL服务器的运行状态,例如是否有和CPU和内存使用情况,是否有重要进程运行,以及服务器日志的错误和警告。 通过定期运行巡检脚本,管理员可以及时了解数据库的运行状态和性能问题。这不仅可以帮助管理员更好地管理数据库,而且可以提前识别并解决潜在的故障和性能问题,从而确保数据库的稳定性和可靠性。 ### 回答3: Linux中MySQL巡检脚本是一种用于检测和监视MySQL数据库性能和健康状态的脚本工具。它可以通过执行一系列的检查和监控任务来确保数据库运行正常,并提供及时的警报和通知,以便管理员可以采取适当的措施来解决问题。 MySQL巡检脚本通常包括以下方面的检查内容: 1. 数据库连接和登录验证:检查数据库的连接是否正常,并验证登录凭证是否正确。 2. 表空间和存储容量:检查数据库的表空间使用情况和存储容量是否足够,以避免空间不足导致数据库运行缓慢或崩溃。 3. 查询性能和慢查询分析:通过分析数据库的查询性能和慢查询日志,确定是否存在性能问题,并给出相应的优化建议。 4. 错误日志和警告信息:检查MySQL的错误日志和警告信息,及时发现并解决可能的问题。 5. MySQL进程和线程状态:检查数据库的进程和线程状态,包括运行中的进程、线程和锁定信息,以确保数据库的正常运行。 6. 主从复制状态:检查主从复制状态,确认主从服务器同步是否正常,并及时发现和修复复制延迟或断开的问题。 7. 数据库备份和恢复:检查数据库的备份和恢复情况,确保备份文件的完整性和可用性,以保证数据的安全性。 通过使用这些巡检脚本,管理员可以及时发现数据库的问题,提高数据库的稳定性和性能,确保数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值