mysql优化配置
- 格式:doc
- 大小:64.50 KB
- 文档页数:8
Mysql 优化配置
Mysql优化通常分为,硬件优化,服务配置优化,数据库语句索引优化等。我这里要描述的是有关于服务配置优化,主要对mysql的主要配置文件调整。
第1章安装mysql包
1.1 mysql解压
通过官网/downloads/mysql/ 下载目前最新的mysql-5.5.14-linux2.6.tar.gz,该包为已编译过的包,所以在需要根据默认情况下安装,可减少配置文件路径修改。
[root@rhel ~]# tar zxvf mysql-5.5.14-linux2.6.tar.gz
[root@rhel ~]# mv mysql-5.5.14-linux2.6 /usr/local/
[root@rhel ~]# ln –s /usr/local/mysql-5.5.14-linux2.6 /usr/local/mysql
这是默认的安装地址,当然用户也可以自己进行地址更改,但在启动数据库的时候,就需要对mysql.server文件及f文件进行修改在生成mysql启动的值,如pid路径,数据库路径等。
1.2 配置文件设置
完成mysql包的解压后,首先要做的是处理配置文件。Mysql包自带有参考配置文件,在/usr/local/mysql/support-files/目录下,其该文件主要应用根据实际服务器配置情况进行选取。
f # 32M - 64M
f # 128M-256M
f # memory = 512M
f # 1G-2G
f # 4GB
由于测试,我这里使用的是常用小型机使用的文件f文件,我们将其拷入默认配置文件目录/etc/目录下,并命名为f
[root@rhel ~]# cp /usr/local/mysql/support-file/f /etc/f
默认配置文件可支持小型服务链接,在非特别需要自定义的时候,通常不对/etc/f进行更改。而是在系统测试运行后根据实际访问数据进行调节,稍后在优化篇会讲到。
1.3 mysql授权
在完成mysql包的解压,简单配置文件后,还需要对用户授权。由于官网下载的包是已经编译过的包,所以移动后的安装包的权限也需要更改,系统需要检查是否有mysql用户,如果没有需要创建该用户,一般不对该用户设置登录权限。
[root@rhel ~]# groupadd –g 103 mysql
[root@rhel ~]# useradd –c ‘MySQL Server’–g mysql –u 100 –d /usr/local/mysql mysql
[root@rhel ~]# chown –R mysql /usr/local/mysql
使mysql用户拥有对数据拥有所有权,也可影响ROOT以外的用户对其更改。
再着执行数据库安装授权,执行以下命令:
[root@rhel ~]#/usr/local/mysql/srclib/mysql_install_db
运行mysql_install_db命令过后,mysql将绑定该服务安装位置。
用户需要成功连接以运行root,需要对root进行授权(该步骤首次无法启动服务可执行该项,以确保sock文件的生成对mysql的启动影响)
[root@rhel ~]#/usr/local/mysql/bin/mysqld_safe --user=root
在/tmp/目录下系统将生成mysql.sock文件,到这里mysql就能启动了。
1.4 启动mysql
完成上述操作后,我们执行mysql启动命令
[root@rhel ~]#/usr/local/mysql/support-files/mysql.server start
提示启动OK后,mysql就正式启动了,同时系统会生成一个关联的PID文件、默认在/usr/local/mysql/data/目录下
第2章Mysql优化
在mysql优化中主要对系统硬件、软件、网络环境,数据表结构,索引,SQL语句,参数,存储引擎等信息相关。下文主要对参数优化做了详细介绍。
2.1 控制数据库访问权限
对于使用php脚本来进行交互,最好建立一个用户只针对某个库有update、select、delete、insert、drop table、create table等权限,这样就很好避免了数据库用户名和密码被黑客查看后最小损失。
比如下面我们创建一个数据库为db1,同时建立一个用户test1能够访问该数据库。mysql> create database db1;
mysql> grant select,insert,update,delete,create,drop privileges on db1.* to test1@localhost identified by 'admindb';
以上SQL是创建一个数据库db1,同时增加了一个test1用户,口令是admindb,但是它只能从本地连接mysql,对db1库有select,insert,update,delete,create,drop操作权限。
2.2 配置f优化
通常mysql的配置文件,原安装包就有根据常用情况下添加的参考文档,但实际允许中往往需要更改其,以加强服务查询、写入速度。在谈配置文件更改时,我们需要先了解几个mysql状态查询语句,使其更好的更改配置
Mysql> show status ——显示状态信息(扩展show status like 'XXX')
Mysql> show variables ——显示系统变量(扩展show variables like 'XXX')
Mysql> show innodb status ——显示InnoDB存储引擎的状态
Shell> mysqladmin variables -u username -p password——显示系统变量
Shell> mysqladmin extended-status -u username -p password——显示状态信息
Shell> mysqld --verbose --help [|more #逐行显示]——查看状态变量及帮助:
2.2.1重要参数
使用mysqladmin variables extended-status –u root –p 可以看到目前的参数,有3个配置参数是最重要的,即key_buffer_size,query_cache_size,table_cache。
key_buffer_size只对MyISAM表起作用,key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STA TUS LIKE ‘key_read%’获得)。
另外一个估计key_buffer_size的办法,把你网站数据库的每个表的索引所占空间大小加起来看看。以此服务器为例:比较大的几个表索引加起来大概125M,这个数字会随着表变大而变大。
设置:
key_buffer_size –128M
key_read_requests –650759289
key_reads - 79112
从4.0.1开始,MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。
通过调节以下几个参数可以知道query_cache_size设置得是否合理
Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocks
Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,同时Qcache_hits 的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,