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. 一步步实现自己的ORM(四)

    通过前3章文章,大致对ORM有一定的了解,但也存在效率低下(大量用了反射)和重复代码,今天我们要对ORM进行优化. 具体流程如下: 我们优化的第一个就是减少反射调用,我的思路是定义一个Mapping, ...

  2. Vue.js - Day5 - Webpack

    在网页中会引用哪些常见的静态资源? JS .js .jsx .coffee .ts(TypeScript 类 C# 语言) CSS .css .less .sass .scss Images .jpg ...

  3. css选择器(基础)

    CSS选择器:     一个样式的语法是由选择器+属性+属性值三部分组成: 到底什么是选择器呢? 答:个人直白的理解为:选择一种要对它进行操作的标签的方法就叫做选择器.也就是说选择器就是一种选择元素的 ...

  4. windows下Mongodb和Memcached安装笔记

    MongoDB安装: D:\ProgramFiles\MongoDBServer3.2\bin\mongod --dbpath D:\mongoData D:\ProgramFiles\MongoDB ...

  5. IOS与android

    Android和iOS那个好?应该先往哪个上面投入资源?多次被人问到此类问题,笔者刚好自己的项目也需要考虑iOS版本.就索性进行了一番调研,于是有了本文(本次不讨论越狱的iOS) 首先从情感上,你喜欢 ...

  6. MySQL存储过程(更新指定字段的数据)

    mysql存储过程示例: USE 数据库名称;DROP PROCEDURE IF EXISTS 数据库名称.存储过程名称;delimiter $$CREATE PROCEDURE 数据库名称.存储过程 ...

  7. org.springframework.beans.factory.BeanCreationException: Could not autowire

    由于我在项目中引用了如下代码,增加了 @Configurationpublic class Connection {    public @Bean HttpClientConfig httpClie ...

  8. UVA - 1395 Slim Span (最小生成树Kruskal)

    Kruskal+并查集. 点很少,按边权值排序,枚举枚举L和R,并查集检查连通性.一旦连通,那么更新答案. 判断连通可以O(1),之前O(n)判的,第一次写的过了,后来T.. #include< ...

  9. C++类构造函数、析构函数运行机理

    http://blog.sina.com.cn/s/blog_6fd68d5f0100n60h.html 前言--构造函数.析构函数的简单理解:1)构造函数---对象被创建时候调用的函数:2)析构函数 ...

  10. 【Python】使用cmd模块构造一个带有后台线程的交互命令行界面

    最近写一些测试工具,实在懒得搞GUI,然后意识到python有一个自带模块叫cmd,用了用发现简直是救星. 1. 基本用法 cmd模块很容易学到,基本的用法比较简单,继承模块下的Cmd类,添加需要的功 ...