linux下mysql的简单配置及监控

配置文件路径

mysql启动的时候便会按照一定的顺序寻找配置文件my.cnf,若找到便会加载my.cnf。那怎么知道当前mysql服务使用的my.cnf文件的路径呢?
可通过执行命令: mysql --help | grep my.cnf 或 mysqladmin --help | grep -A1 'Default options'

该命令输出mysql加载配置文件的次序 :/etc/my.cnf  /etc/mysql/my.cnf  /usr/etc/my.cnf   ~/.my.cnf
因此一般mysql的配置文件路径都是 /etc/my.cnf 

配置文件内容

其实就算my.cnf是空的也没关系,因为所有参数在mysql中都有默认值。官方也提供了一系列硬件环境下的参考配置文件,其中的my-innodb-heavy-4G.cnf 是一个非常好的参考,上面的文档也很详细。
由于我不是DBA,想从开发的角度去理解mysql的底层机制,关于配置这里我觉得可以参考《高性能Mysql》中的第8章,还有《MySQL技术内幕 InnoDB存储引擎》中的第3章。看完这些资料我感觉大牛想表达的意思:
(1)绝大多数的默认值都是适用的,因此对于不太了解的参数,就不要配置。
(2)凡是配置路径或文件名的参数,都要明确配置。这是一种好习惯,也方便运维。
(3)对于设置数量的参数,比如内存,并不是越大越好。建议参考官方默认值,先设置比它高一点试试。
(4)配置参数是一个循循渐进的过程,要通过 配置-》监控-》配置-》监控 的过程来逐步改善。

以下是我开发环境的最精简配置参考(2G内存)
[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock
pid-file  = /var/lib/mysql/mysql.pid 
datadir  =  /var/lib/mysql/
default-storage-engine = InnoDB
character-set-server  =   utf8 
collation-server  =   utf8_general_ci 

lower_case_table_names = 1 
max_connections = 1000
thread_cache_size = 20

log-bin = mysql-bin
sync_binlog = 1
binlog_format = ROW
max_binlog_size = 512M 
expire_logs_days = 5

log-output=FILE 
log-error =   /var/lib/mysql/error.log 

slow_query_log
long_query_time = 1
slow_query_log_file  = /var/lib/mysql/slow.log 

#MyISAM
key_buffer_size = 32M

#INNODB
innodb_buffer_pool_size = 1G
innodb_log_file_size = 512M


[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
#safe-updates

[mysqld_safe]
open-files-limit = 8192
每次修改my.cnf后都需要重新启动mysql才能生效。要是启动过程报错,可以查看异常日志。通过日志不仅能看到错误原因,还可以看到比如某个参数不推荐使用了,如concurrent_thread。还有就是my.cnf中那些文件路径的参数,一定要保证该路径是存在,系统是不会为你自动生成的。

查看服务中的变量

当mysql服务正常启动后,便会加载配置文件中的参数,成为服务中的变量,变量分为只读的,和允许动态修改的。并且变量也是有作用域的,具体可参考 mysql中的变量定义。 这里我们只关心global(全局)和session(会话)级别的。
可通过sql语句  show global variables 查看所有的全局变量,而  show variables 则显示这次连接中的会话变量。
另外它还支持like操作符,比如  show global variables like '%innodb%'
因此当我们修改了配置文件中的某个参数后重启mysql,便可通过这种方式来检查配置是否真的生效了。

Mysql简单监控

(1)借助于linux本身的top命令可以查看mysql当前占用的内存、cpu等情况。使用netstat -anpt | grep mysql 可以查看到mysql当前网络连接情况。

(2)使用sql语句  show global status 查看全局的状态参数。比如要得到Mysql当前的连接数,可通过语句: show global status like '%Threads_connected%'

(4)如果想查看每个数据库有哪些连接信息,连接详情,
          可通过命令 show full processlist 或 select * from information_schema.processlist

(3)使用可视化工具,比如官方mysql workbenchde中的Server菜单项就提供了一些监控,如Server Status。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值