MySQL自用脚本(不定期更新)

查询指定SQL的trace信息

mysql -uUSER -pPWD -hHOST -e "
use ins_tc_prd; 
set session optimizer_trace='enabled=on'; 
set optimizer_trace_max_mem_size = 1638400; 
explain SQL; 
select * from information_schema.optimizer_traceG;" > trace_log.log

 查看表空间的使用情况

select table_name, 
       (data_length+ index_length) /1024/1024 as total_mb, 
       table_rows 
from information_schema.tables 
where table_schema= 'Database' ;//不写就是全部

 查看MySQL数据库状态

mysqladmin -P3306 -uroot -p -h127.0.0.1 -r -i 1 extended-status |awk -F"|" "BEGIN{ count=0; }"'{ if($2 ~ /Variable_name/ && ((++count)%20 == 1)){ 
print "----------|---------|--- MySQL Command Status --|----- Innodb row operation -----|-- Buffer Pool Read --"; 
print "---Time---|---QPS---|select insert update delete|  read  inserted updated deleted|   logical    physical"; 
} 
else if ($2 ~ /Queries/){queries=$3;} 
else if ($2 ~ /Com_select /){com_select=$3;} 
else if ($2 ~ /Com_insert /){com_insert=$3;} 
else if ($2 ~ /Com_update /){com_update=$3;} 
else if ($2 ~ /Com_delete /){com_delete=$3;} 
else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;} 
else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;} 
else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;} 
else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;} 
else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;} 
else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;} 
else if ($2 ~ /Uptime / && count >= 2){ 
printf(" %s |%9d",strftime("%H:%M:%S"),queries); 
printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete); 
printf("|%8d %6d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted); 
printf("|%10d %11d
",innodb_lor,innodb_phr); 
}}';

 MySQL查询阻塞语句

select r.trx_id waiting_trx_id, r.trx_mysql_thread_Id waiting_thread, 
       r.trx_query waiting_query, b.trx_id blocking_trx_id, 
       b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query 
  from information_schema.innodb_lock_waits w inner join information_schema.innodb_trx b on b.trx_id = w.blocking_trx_id 
  inner join information_schema.innodb_trx r on r.trx_id = w.requesting_trx_id;

 导出语句

--导出建表语句和数据
/opt/mysql/bin/mysqldump  --defaults-file=/opt/mysql/my.cnf -uroot -p123456 -hlocalhost  -R --single-transaction  --default-character-set=utf8  dentist ds_user  uas_user  ds_organization  > /opt/mysql/bak_dir/table.sql

--dentist 数据库名称
-- ds_user  uas_user  ds_organization  表名称


--导出建表语句 不包含数据
/opt/mysql/bin/mysqldump  --defaults-file=/opt/mysql/my.cnf -uroot -p123456 -hlocalhost  -R --single-transaction  --default-character-set=utf8 -d  dentist ds_user  uas_user  ds_organization  > /opt/mysql/bak_dir/table.sql

 查询表的数据量大小

select table_name,(data_length + index_length)/1024/1024 as table_mb,table_rows 
from information_schema.tables 
where table_schema='zabbix';

也可以在系统上直接查看表对应的数据文件大小

转自

  1. http://blog.itpub.net/29510932/viewspace-1812475/
原文地址:https://www.cnblogs.com/polestar/p/5645107.html