本文发布于Cylon的收藏册,转载请著名原文链接~


利用 mysql -e 参数查看 mysql 数据

$ mysql -uroot -p111 -e 'use test;show tables;'
+------------------------------+
| Tables_in_test               |
+------------------------------+
| 33hao_activity               |
| 33hao_activity_detail        |
| 33hao_address                |
+------------------------------+

利用 mysql -e 参数查看SQL线程执行状态

$ mysql -uroot -p111 -e 'show processlist;' 
kill 12;

查看完整的线程状态,此参数才查看慢查询语句是非常有用

解决方法:

root@localhost [test]>show variables like '%_timeout%';
# 设置
set global wait_timeout=60;
set global interactive_timeout=60;
  1. 在配置文件里修改
set global wait_timeout=60;
set global interactive_timeout=60; # 此参数设置后wait_timeout自动生效
  1. 其他方法
  • (1) PHP程序中,不适用持久链接,即 mysql_connect 而不是 pconnect(java调整连接池)

  • (2) PHP程序执行完毕,应该显示调用 mysql_close()

  • (3) 逐步分析MySQL的SQL查询及慢查询日志,找到查询过慢的SQL,优化。

利用mysql -e查看mysql变量及性能状态

$ mysql -uroot -p111 -e 'show variables;'|head -5
Variable_name   Value
auto_increment_increment        1
auto_increment_offset   1
autocommit      ON
automatic_sp_privileges ON

不重启数据库就该数据库参数

要求:重启后还能生效

$ sed -n '122p' /etc/my.cnf                   
key_buffer_size = 16M

$ sed -i 's#key_buffer_size = 16M#key_buffer_size=32M#g' /etc/my.cnf                           
$ sed -n '122p' /etc/my.cnf                             
key_buffer_size=32M

生产环境常用重要命令小结

# 查看数据库里正在执行的SQL语句,可能无法看完整SQL语句
show processlist;

# 查看正在执行的完整SQL语句,完整显示
show full processlist;

# 不重启数据库调整数据库参数,直接生效,重启后失效
set gloables key_buffer_size=1024*1024*32;

# 查看数据库的配置参数信息,例如:my.cnf里参数的生效情况。
show variables;

# 杀掉SQL线程的命令ID为线程号
kill id

# 查看当前会话的数据库状态信息
show session status;

# 查看整个数据库运行状态信息,很重要,要分析并要做好监控
show global status;

# 显示innodb引擎的性能状态(早期show innodb status)
show engine innodb status;

计算一天之内:MySQL数据库有多少 insert delect语句,有没有好办法

  1. 定时任务每天0点,show global status; 按天取出对比。

  2. 按天分析binlog日志,获取数据库不同语句的频率。

mysqladmin命令

# 修改密码
mysqladmin password 111
mysqladmin -uroot -p111 password 222 

# 查看状态
mysqladmin -uroot -p111 status 
mysqladmin -uroot -p111 extended-status show global status
mysqladmin -uroot -p111 -S /data/3306/mysql.sock -i status

# 刷新日志
mysqladmin -uroot -p111 flush-logs
mysqladmin -uroot -p111 processlist

# 实时跟踪
mysqladmin -uroot -p111 processlist -i 1

# 关闭mysql
mysqladmin -uroot -p111 -S /data/3306/mysql.sock shutdown
mysqladmin -uroot -p111 -S /data/3306/mysql.sock variables show vaiables

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:https://www.oomkill.com/2017/05/ch7-mysql-non-interact/

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。