linux下mysql的简单配置及监控

来源:互联网 发布:麦多商城系统 源码 编辑:程序博客网 时间:2024/06/09 23:32

配置文件路径

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= 3306socket= /var/lib/mysql/mysql.sockpid-file  = /var/lib/mysql/mysql.pid datadir  =  /var/lib/mysql/default-storage-engine = InnoDBcharacter-set-server  =   utf8 collation-server  =   utf8_general_ci lower_case_table_names = 1 max_connections = 1000thread_cache_size = 20log-bin = mysql-binsync_binlog = 1binlog_format = ROWmax_binlog_size = 512M expire_logs_days = 5log-output=FILE log-error =   /var/lib/mysql/error.log slow_query_loglong_query_time = 1slow_query_log_file  = /var/lib/mysql/slow.log #MyISAMkey_buffer_size = 32M#INNODBinnodb_buffer_pool_size = 1Ginnodb_log_file_size = 512M[mysqldump]quickmax_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
(3)使用可视化工具,比如官方mysql workbenchde中的Server菜单项就提供了一些监控,如Server Status。


0 0
原创粉丝点击