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. pc端_移动端_H5_ QQ在线客服链接代码

    PC端:QQ在线客服链接代码 <a href="tencent://message/?uin=1239300678&Site=sc.chinaz.com&Menu=ye ...

  2. Spring 配置定时器(注解+xml)方式—整理

    一.注解方式 1. 在Spring的配置文件ApplicationContext.xml,首先添加命名空间 xmlns:task="http://www.springframework.or ...

  3. 洛谷 2299 Mzc和体委的争夺战

    题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙),他要来与mzc争夺男家丁. mzc很生气 ...

  4. python之编码的进阶

    识记点: ascii 不支持中文 gbk 国标 中文2 英文1 unicode 万国码 英文2 中文4 utf-8 英文1 欧洲2 亚洲3 硬盘中存储的是字节 用什么编码就用什么解码 # 一段文字的转 ...

  5. javascript的trigger事件

    <html> <head> <script type="text/javascript" src="/jquery/jquery.js&qu ...

  6. Vnc自动登录器(VncManager)v1.3-多国语言绿色版-Release1-20190215

    Vnc自动登录器 v1.3 (20190215) By: ybmj@vip.163.com , https://www.cnblogs.com/ybmj/ 下载地址:http://bbs.wuyou. ...

  7. HDU-1217-Arbitrage(SPFA)

    这题和以往的求最短路的题目略微有点不一样,以往求的都是最小的,这题求的是大的,而且还是乘法. 我们求的时候初始化的时候就要进行相反的初始化了,把它们初始化为0,然后比较大的就更新. 因为这题的点少边多 ...

  8. 计算机完全卸载mysql

    编写时间:15:07:02(2018年9月23日) 1.停止mysql服务. “运行”——>“cmd”——>输入“net stop mysql;” 看链接: https://blog.cs ...

  9. a标签中javascript和void

    <body> <a href="javascript:;">点了无反应</a> <a href="javascript:void ...

  10. 纯 CSS 创作一个表达怀念童年心情的条纹彩虹心特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/QxbmxJ 可交互视频教 ...