Mysql常用命令

Mysql查询库大小

Mysql查询各个DB库占用大小

SELECT
TABLE_SCHEMA '数据库名',
concat( TRUNCATE ( sum( data_length )/ 1024 / 1024, 2 ), 'MB' ) AS '数据库大小',
concat( TRUNCATE ( sum( index_length )/ 1024 / 1024, 2 ), 'MB' ) AS '索引占用大小'
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'krpano'
GROUP BY
TABLE_SCHEMA
ORDER BY
'数据库大小' DESC;

Mysql指定DB库下查询各个表Table占用大小

USE information_schema;
SELECT
TABLE_SCHEMA AS '数据库名',
TABLE_NAME '表名',
ENGINE '引擎',
TABLE_ROWS '表数据行数',
TABLE_COMMENT '表注释信息'
FROM
TABLES
WHERE
TABLE_SCHEMA = 'krpano'
ORDER BY
table_rows DESC;

Mysql查询慢SQL

慢SQL参考博客

查询mysql进程

SHOW PROCESSLIST

查询指定耗时的mysql进程

SELECT
*
FROM
information_schema.PROCESSLIST
WHERE
1 = 1
AND db = 'dbname'
AND command != 'Sleep'
AND time > 10

Mysql批量处理慢SQL

查询当前mysql进程信息

SELECT
*
FROM
information_schema.`PROCESSLIST`
WHERE
db = 'DB'
AND command = 'Query';

获取需要批量kill的mysql进程信息

将查询结果复制出来,然后新查询页面里批量执行即可。

SELECT
concat( "kill ", ID, ";" ) AS command
FROM
information_schema.`PROCESSLIST`
WHERE
db = 'DB'
AND command = 'Query';

Mysql问题记录

MySQL出现Waiting for table metadata lock的原因以及解决方法

参考博客

mysql控制台执行删除db库命令一直卡住,通过命令show full processlist;打印截图信息。

参考解决方式博客(场景二)

select * from information_schema.innodb_trx\G

执行命令

kill 424;

卡住执行命令已成功执行完成,再次查看进程已无异常情况

Mysql主从复制问题

MySQL主从复制(9)3个线程状态信息讲解

从库的my.cnf配置不要配置如下参数:

# log_slave_updates 会使从库将同步的数据写入自己的二进制日志。如果不需要级联复制,可以将其关闭以减少 I/O 负担。
log_slave_updates

Mysql注意事项

  1. Navicat中MySQL提示\G、\g错误

    不能在navicat中使用\G,\g,会导致报错。

mysqldump命令导出SQL

mysqldump参数大全

mysqldump 指定IP port

携带参数项命令

mysqldump -p 3306 -h 127.0.0.1 -uroot -p'PASSWORD' DB_NAME --tables TABLE_NAME -q --complete-insert --single-transaction > /path/xxx.sql
  • PASSWORD 替换对应密码
  • DB_NAME 替换对应数据库名称
  • TABLE_NAME 替换对应表名称
  • --complete-insert 使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。
  • --single-transaction 该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和–lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用–quick 选项。
  • -q 不缓冲查询,直接导出到标准输出。默认为打开状态,使用–skip-quick取消该选项。

不携带额外参数项命令

mysqldump -uroot -p'PASSWORD' DB_NAME TABLE_NAME > /path/xxx.sql

-p”PASSWORD” 可能会报错,替换-p’PASSWORD’即正常!

alt text