1.说明

由于在centos7的yum仓库中没有mysql,centos7用mariadb替代了mysql. mariadb是mysql源代码的一个分支,
mysql被ORACLE闭源,而mariadb则开源,两者的功能是相同.

2.step1:安装,启动

$ yum -y install mariadb mysql-devel mariadb-server
$ systemctl start mariadb //systemctl stop mariadb 停止mariadb
$ systemctl enable mariadb
$ systemctl status mariadb

3.step2:配置优化(mysql读取配置文件的顺序为/etc/mysql/my.cnf,/etc/my.cnf ,~/.my.cnf)

1.修改root密码:

$ mysql_secure_installation

2.优化配置文件选项(这里修改/etc/my.cnf)

mariadb的配置文件模板位于/usr/share/mysql 目录下,不同规模的应用都有各自的配置文件模板.

优化选项:

1. max_connections

MySQL最大连接数量,增加该值可以增加mysqld要求的文件描述符的数量,当server并发连接很大,可以增大此值,因为mysql会为每个里阿姐提供连接缓存区,连接数越多内存开销远大.当数值太小时,为出现ERROR 1040:To many connections .通过show variables like 'max_connections' 查看该值show status like 'max_used_connections' 响应的连接数,连接高峰时max_used_connections/max_connections=0.85较为理想.

2. back_log

mysql连接堆栈数,当mysql在短时间收到非常多的连接,数量超过了max_connections,这时mysql就将未响应的连接放到堆栈中,back_log就是指定这个堆栈的大小的,show full processlist 发现有大量的unauthenticated user的待连接进程的时候,就可以增大back_log的值,默认值是50,可调优为128(Linux设置范围为0~512)

3.interactive_timeout/wait_timeout

wait_timeout 是mysql关闭一个非交互连接前等待的秒速,interactive_timeout是mysql关闭一个交互连接(mysql shell)前等待的秒数.所谓交互连接是mysql_real_connection()使用CLIENT_INTERACTIVE的连接.对于wait_timeout在不影响的你的sql处理的情况下,越低越好,减小wait_timeout 直到你的应用不会产生sleep process最好.对于interactive_timeout,默认值是28800(8个小时),可以调优为7200,但这个不会对你的应用有太大的影响(当你他通过 mysqldump or mysql command line tools 连接mysql 时有影响). show variables like '%timeout%',查看 wait_timeout 和interactive_timeout.除此之外还有connect_timeout,net_read_timeout,net_write_timeout,这几个选项设置大会避免产生timeout error,当你执行比较长的query时.

4.key_buffer_size

key_buffer_size指定索引缓冲区的大小,它会影响索引处理的速度尤其是索引读取的速度,通过状态值key_cache_miss_rate=key_reads/key_read_requests*100% 大小可以直到key_buffer_size设置时候合理,key_reads/key_read_requests 越低越好,至少是1:100,1:10000,通过 show status like '%key_reads%' 查看这两个状态值.key_buffer_size只对myisam表起作用,即使你不使用Myisam表,但是内部的临时磁盘表是MYISAM表,也要使用该值,可以检查状态值 created_tmp_disk_tables 得知详情.默认key_buffer_size 为128M,可以调优为256M

5.read_buffer_size

顺序扫描的线程围棋扫描的每张表分配的缓冲区大小,默认是128K.如果想要对一张大表进行全表扫描,可以增大此值.一般可设置为16M

6.read_rnd_buffer_size

随机读缓冲区大小,当按任意顺序读取时,mysql将会分配一个随机读取缓冲区,在进行排序查询时,mysql首先会先扫描一遍该缓冲区,以避免对磁盘就行读取,当要排序大量数据,可以适当增大此值.一般可设置为16M.

7.query_cache_size

查询结果缓存区的大小,对于同样的查询语句,mysq直接从缓冲区读取,通过show status like 'Qcache_%',可以直到query_cache_size是否合理.如果 Qcache_lowmem_prunes的值非常大,表明会经常出现缓冲不够.如果Qcache_hits非常大,说明查询缓冲使用非常的频繁,需要适当增大query_cache_size.如果Qcache_hits不是很大,说明查询的重复率很低,这时使用查询缓冲反而会影响效率.与查询缓冲有关的还有query_cache_type,query_cache_limit,query_cache_min_res_unit.query_cache_type 指定是否使用查询缓冲.query_cache_min_res_unit 指定查询缓冲区空间的最小单位,默认是4k,当Qcache_free_blocks很大,说明缓冲区碎片很多,这是可以减小query_cache_min_res_unit.查询缓存碎片率=Qcache_free_blocks/Qcache_total_blocks,查询缓存碎片率大于20%,可以用flush query cache 整理碎片,尝试减小query_cache_min_res_unit.查询缓存利用率=(query_cache_size-Qcache_free_memory)/query_cache_size100%.查询缓存利用在80%以上,并且Qcache_lowmem_prunes>50,这时要么是query_cache_size太小,要么碎片太多.查询缓冲命中率=(Qcache_hits-Qcache_inserts)/Qcache_hits100%.

8.sort_buffer_size

每个排序的线程的缓冲区的大小,增大该值可以加速order by和group by等操作,此参数最好保持默认,分配大小不当可能导致性能下降. 默认值是2M,可设置为16M. show variables like 'sort_buffer_size'

9.join_buffer_size

联合查询分配的缓冲区大小,它和read_buffer_size,read_rnd_buffer_size,sort_buffer_size都是每个线程单独分配的.

10.table_open_cache

数据表缓冲区大小,每当mysql访问一个表的时候,如果在表的缓冲去还有空间,就将该表放入缓冲区中,下次访问的时候可以更快速的访问.通过在查询高峰起查看状态值open_tables和opened_tables,判断时候可以增加table_open_cache的值,如果open_tables和table_open_cache 相同,而opened_tables在不断增加,可以适当增加此值.

11.max_heap_table_size

内存表大小的最大值,max_heap_table_size和tmp_table_size一起限制了内存表的大小,如果某个内存表的大小超过了tmp_table_size,mysql自动将heap表改为磁盘上myisam表.

12.tmp_table_size

临时表的大小,在做group by查询时会生成一张临时表,如果调高该值,mysql将增加heap表的大小,可以达到提高联合查询的效果.尽量优化查询,保证查询过程中生成的表在内存中,避免临时表过大,导致生成磁盘上的myisam表.与之相关的几个状态值created_tmp_tables ,created_tmp_disk_tables,create_tmp_files 每次创建临时表的时候,created_tmp_files 增大,当临时表大于tmp_table_size时,created_tmp_disk_tables 将增加,created_tmp_files标示mysql创建的临时文件数.表理想的值是created_tmp_disk_tables/created_tmp_tables*100%<=25%.

tmp_table_size默认是16M,可以调到64-256M,也是每个线程分配,太大会导致io堵塞

13.thread_cache_size

缓存的线程数的大小,由于mysql每个连接对应一个独立的线程,如果在短时间内打开很多连接,意味process在短时间创建多个线程,这样会很消耗cpu,为了解决此问题,变产生thread_cache,mysql将已关闭的连接对应的thread缓存起来,等下次新连接到来时直接reuse thread in threads pool,而不需要临时创建thread,而thread_cache_size就是决定threads pool的大小的.thread_cache_size是通过在连接高峰期查看状态值threads_created,max_used_connections,connections,show status like 'threads_created' ,show status like 'max_used_connections',show status like 'connections'.然后计算hit rate=threads_created/connections,如果hit rate要小于50%.或者thread_cache_size>max_used_connections.

也可通过命令查看threads_created的值.

$ mysqladmin -u root -p -r -i 1 ext | grep Threads_created
14.thread_concurrency

通常设置为设置为主机cpu的两倍.

15.innodb_buffer_pool_size(只针对InnoDB)

innodb_buffer_pool_size作用和key_buffer_size一样.通常对于单独运行的mysql服务器,innodb_buffer_pool_size 设置为机器内存的70%-80%.

16.innodb_log_file_size

一般设置为256M即可.

17.innodb_log_buffer_size

通常情况下4M,已经足够,对于较大的事物,可以适当增大此值

18.innodb_flush_log_at_trx_commit

主要决定innodb将log buffer中的数据写入磁盘文件(事务提交的时候)并且flush磁盘的时间点.取值可取0,1,2. 0 表示在事务提交时,不写入日志,而是每秒写入磁盘并flush磁盘一次;1 表示在没秒钟或者在事务提交前都将log buffer写入磁盘,flush磁盘;2 表示每次事务提交前都写入磁盘,然后每一秒进行flush 磁盘操作.innodb_flush_log_at_trx_commit对数据的插入有很大影响,通常建议设置为2.

19.innodb_thread_concurrency

对于cpu为1-2的机器,可以将这个选项设置为0,对于cpuNum>4的机器建议设置为(cpu_num +disk_num),8左右,详细见这篇文章.

20.innodb_additional_mem_pool_size

指定innodb用来储存数据字典和其他内部数据的结构的内存池大小.默认值是1M.通常不用设置太大,如果不够mysql会在日志中写入警告信息.对于2G内存的机器,建议设置为20M.

21.innodb_flush_method

在大多数情况下设置为O_DIRECT,详见这里.

Centos7 安装配置优化mysql(mariadb分支)的更多相关文章

  1. Centos7安装配置Apache+PHP+Mysql+phpmyadmin

    转载自: Centos7安装配置Apache+PHP+Mysql+phpmyadmin 一.安装Apache yum install httpd 安装成功后,Apache操作命令: systemctl ...

  2. CentOS7 安装配置笔记

    CentOS7 安装配置笔记 1.通过镜像安装 CentOS7 ==============================* 使用 UltraISO 9.7 或者 rufus-3.5p 制作ISO的 ...

  3. centos7中配置java + mysql +jdk +使用jar部署项目

    centos7中配置java + mysql +jdk  +使用jar部署项目 思维导图 1. 配置JDK環境 1.1下载jdk安装包 Java Downloads | Oracle 1.2 将下载j ...

  4. [mysql]brew 安装 配置 操作 mysql(中文问题)

    mac 下卸载mysqldmg mac下mysql的DMG格式安装内有安装文件,却没有卸载文件--很郁闷的事. 网上搜了一下,发现给的方法原来得手动去删. 很多文章记述要删的文件不完整,后来在stac ...

  5. Centos7安装配置gitlab

    Centos7安装配置gitlab 这篇文字我会介绍在Centos7上安装gitlab,配置gitlab的smtp,并且创建项目demo. sudo yum install openssh-serve ...

  6. Centos7安装配置JDK8

    Centos7安装配置JDK8 一.准备工作 第一步,去甲骨文官网下载Jdk相应的版本,我这里下载的是jdk1.8. 第二步将你从官网上下载下来的jdk使用FTP工具上传到云服务器上的相应目录,我的是 ...

  7. centos7命令行和图形界面的相互切换(附centos7安装配置教程)

    一.最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同,先整理如下,加深记忆. 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面: 2 ...

  8. (转)Centos7安装配置NFS服务和挂载

    Centos7安装配置NFS服务和挂载 原文:https://www.u22e.com/601.html NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支 ...

  9. Centos7安装配置jenkins(Tomcat)

    Centos7安装配置jenkins(Tomcat) 一.准备工作 1.1 安装JDK1.8 具体安装过程不在赘述. 1.2 下载jenkins的war包 jenkins官网下载地址:https:// ...

随机推荐

  1. dataTable 中数据的居中显示

    遇到了一个小问题,就是在向dataTable中添加数据时,数据总是向左对齐,而dataTable又没有设置数据对齐的方法,这里写一个在网上看到的一个方法,分享出来看一下,简单实用. html代码如图1 ...

  2. rxjava封装,RxBus封装(上线项目集成,声明周期管理,处理溢出内存,支持同时多个请求。)

    Github地址 RxLibrary工程:1.rxjava2 + retrofit2的封装,常用的请求(Get,Post,文件上传,文件下载),防止内存泄漏,简单便捷,支持自定义loading等属性. ...

  3. jsp中<c:forEach varStatus="status">的属性值问题

    c:forEach varStatus属性 current当前这次迭代的(集合中的)项 index当前这次迭代从 0 开始的迭代索引 count当前这次迭代从 1 开始的迭代计数 first用来表明当 ...

  4. maven 3.3.9版本下载地址

    请使用迅雷下载 http://www-us.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.zip

  5. UVA 1661 Equation (后缀表达式,表达式树,模拟,实现)

    题意:给出一个后缀表达式f(x),最多出现一次x,解方程f(x) = 0. 读取的时候用一个栈保存之前的结点,可以得到一颗二叉树,标记出现'X'的路径,先把没有出现'X'的子树算完,由于读取建树的时候 ...

  6. UVA 11400 Lighting System Design 照明系统设计

    首先是一个贪心,一种灯泡要么全都换,要么全都不换. 先排序,定义状态d[i]为前面i种灯泡的最小花费,状态转移就是从d[j],j<i,加上 i前面的j+1到i-1种灯泡换成i的花费. 下标排序玩 ...

  7. ubuntu 16.04 安装node.js 8.x

    引自 https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04#how-to-in ...

  8. SSI的实例(登录增删改查)

    源码下载:http://download.csdn.net/detail/u011518709/8195143 主要jar包: 配置文件:web.xml <?xml version=" ...

  9. 安装pycharm 2018.3 Professional Edition

    1.下载pycharm 2018.3 Professional 2.下载破解补丁,Gitee仓库 或 直接下载(Direct download link) ,并放到pycharm目录下的\bin目录( ...

  10. MYSQL - 限制资源的使用

    MYSQL - 限制资源的使用 1.MAX_QUERIES_PER_HOUR 用来限制用户每小时运行的查询数量 mysql> grant select on *.* to 'cu_blog'@' ...