dba-mysql 之配置详解

原文:https://www.cnblogs.com/wangzepu/p/12201276.html

MySQL参数优化对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的观察以及调试,才有可能得到最佳的效果。

概览:
1)连接请求的变量
* 1、max_connections 最大连接数
* 2、back_log 能够缓存的连接数量
* 3、wait_timeout和interative_timeout wait_timeout:指的是MySQL再关闭一个非交互的连接之前所需要等待的秒数。
interative_timeout:指的是关闭一个交互的连接之前所需要等待的秒数。
2)缓冲区变量
* 4、key_buffer_size 索引缓冲区大小
* 5、query_cache_size(查询缓存简称QC) 查询缓冲区大小
* 6、max_connect_errors: 连接错误计数器(超出则禁用host)
* 7、sort_buffer_size: 排序缓冲区(加快order by 和 group by 操作,连接独享,设置过大会大量消耗内存)
* 8、max_allowed_packet=32M server接受数据包大小
* 9、join_buffer_size=2M 关联缓存大小(连接独享)
* 10、thread_cache_size=300 服务器线程缓存数量

3)配置Innodb的几个变量
* 11、innodb_buffer_pool_size innodb缓冲池大小
* 12、innodb_flush_log_at_trx_commit 控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点
* 13、innodb_thread_concurrency=0 innodb线程并发数
* 14、innodb_log_buffer_size 日志文件所用内存大小
* 15、innodb_log_file_size=50M 数据日志文件大小
* 16、innodb_log_files_in_group=3 mysql以循环的方式将日志文件写到多个文件(推荐为3)
* 17、read_buffer_size=1M 读入缓冲区大小
* 18、read_rnd_buffer_size=16M 随机读缓冲区大小(避免磁盘读,提高查询效率)
* 19、bulk_insert_buffer_size=64M 批量插入缓冲区大小(提高插入效率)
* 20、binary log

1)连接请求的变量
1、max_connections
MySQL的最大连接数,如果服务器的并发连接请求量较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,MySQL回味每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。
数值过小经常会出现ERROR 1040:Too mant connetcions错误,可以通过mysql>show status like ‘connections’;通配符来查看当前状态的连接数量(试图连接到MySQL(不管是否连接成功)的连接数),以定夺该值的大小。
show variadles like ‘max_connections’最大连接数
show variables like ‘max_used_connection’相应连接数
max_used_connection/max_connections*100%(理想值约等于85%)
如果max_used_connections和max_connections相同,那么就是max_connections值设置过低或者超过服务器的负载上限了,低于10%则设置过大了。

2、back_log
MySQL能够暂存的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,他就会起作用。如果MySQL的连接数据达到max_connections时,新的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈数量即back_log,如果等待连接的数量超过back_log,将不被接受连接资源。

3、wait_timeout和interative_timeout

wait_timeout:指的是MySQL再关闭一个非交互的连接之前所需要等待的秒数。
interative_timeout:指的是关闭一个交互的连接之前所需要等待的秒数。


对性能的影响
    wait_timeout
    (1)如果设置太小,那么连接关闭的很快,从而使一些持久的连接不起作用
    (2)如果设置太大容易造成连接打开时间过长,在show processlist时,能够看到太多的sleep状态的连接,从而造成too many connections错误。
    (3)一般希望wait_timeuot尽可能的低
    interative_timeout的设置将对你的web application没有多大的影响

2)缓冲区变量
全局缓冲

4、key_buffer_size
key_buffer_size指定索引缓冲区的大小,他决定索引的处理速度,尤其是索引读的速度。通过检查状态值 key_read_requests和key_reads,可以知道key_buffer_size设置是否合理。比例key_reads/key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用show status like ‘key_read%'获得)

未命中缓存的概率:
key_cache_miss_rate = key_reads/key_read_requests*100%
key_buffer_size只对MAISAM表起作用。


如何调整key_buffer_size的值
默认的配置数时8388608(8M),主机有4G内存可以调优值为268435456(256M)

5、query_cache_size(查询缓存简称QC)

使用查询缓存,MySQL将查询结果存放在缓冲区中,今后对同样的select语句(区分大小写),将直接从缓冲区中读取结果。
一个SQL查询如果以select开头,那么MySQL服务器将尝试对其使用查询缓存。
注:两个SQL语句,只要相差哪怕是一个字符(例如 大小写不一样:多一个空格等),那么两个SQL将使用不同的cache
通过 show ststus like ‘Qcache%' 可以知道query_cache_size的设置是否合理


Qcache_free_blocks:缓存中相邻内存块的个数。如果该值显示过大,则说明Query Cache中的内存碎片较多了。
注:当一个表被更新后,和他相关的cache block将被free。但是这个block依然可能存在队列中,除非是在队列的尾部。可以用 flush query cache语句来清空free blocks。
Qcache_free_memory:Query Cache 中目前剩余的内存大小。通过这个参数我们可以较为准确的观察当前系统中的Query Cache内存大小是否足够,是需要增多还是过多了。
Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询能缓存的效果。数字越大缓存效果越理想。
Qcache_inserts:表示多少次未命中而插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert带查询缓存中。这样的情况次数越多,表示查询缓存 应用到的比较少,效果也就不理想。
Qcache_lowmen_prunes:多少条Query因为内存不足而被清除出Query Cache,通过Qcache_lowmem_prunes和Qcache_free_memory 相互结合,能够更清楚的了解到我们系统中Query Cache的内存大小是否真的足够,是否非常频繁的出现因为内存不足而有Query被换出。这个数字最好是长时间来看,如果这个数字在不断增长,就表示可能碎片化非常严重,或者内存很少。


Qcache_queries_in_cache:当前Query Cache 中cache的Query数量
Qcache_total_blocks:当前Query Cache中block的数量


查询服务器关于query_cache的配置
各字段的解释:
query_cache_limit:超出此大小的查询将不被缓存
query_cache_min_res_unit:缓存块的最小大小,query_cache_min_res_unit的配置是一柄双刃剑,默认是 4KB ,设置值大对大数据查询有好处,但是如果你查询的都是小数据查询,就容易造成内存碎片和浪费。
query_cache_size:查询缓存大小(注:QC存储的单位最小是1024byte,所以如果你设定的一个不是1024的倍数的值。这个值会被四舍五入到最接近当前值的等于1024的倍数的值。)
query_cache_type:缓存类型,决定缓存什么样子的查询,注意这个值不能随便设置必须设置为数字,可选值以及说明如下:
    0:OFF 相当于禁用了
    1:ON 将缓存所有结果,除非你的select语句使用了SQL_NO_CACHE禁用了查询缓存
    2:DENAND  则只缓存select语句中通过SQL_CACHE指定需要缓存的查询。
query_cache_wlock_invalidate:当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成在读表获取结果。


查询缓存碎片率:Qcache_free_block/Qcache_total_block*100%
如果查询缓存碎片率超过20%,可以用flush query cache整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。


查询缓存利用率:(query_cache_size-Qcache_free_memory)/query_cache_size*100%
查询缓存利用率在25%以下的话说明query_cache_size设置过大,可以适当减小:查询缓存利用率在80%以上而且Qcache_lowmem_prunes>50
的话说明query_cache_size可能有点小,要不就是碎片太多
查询缓存命中率:Qcache_hits/(Qcache_hits+Qcache_inserts)*100%


Query Cache的限制
a)所有子查询中的外部查询SQL 不能被Cache:
b)在p'rocedure,function以及trigger中的Query不能被Cache
c)包含其他很多每次执行可能得到不一样的结果的函数的Query不能被Cache

6、max_connect_errors:
是一个MySQL中与安全有关的计数器值,他负责阻止过多尝试失败的客户端以防止暴力破解密码的情况,当超过指定次数,MySQL服务器将禁止host的连接请求,直到mysql服务器重启或通过flush hotos命令清空此host的相关信息。(与性能并无太大的关系)

7、sort_buffer_size:

每个需要排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY 或 GROUP BY操作
sort_buffer_size是一个connection级的参数,在每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存。
sort_buffer_size:并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统的内存资源。例如:500个连接将会消耗500*sort_buffer_size(2M)=1G

8、max_allowed_packet=32M
根据配置文件限制server接受的数据包大小。

9、join_buffer_size=2M
用于表示关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。

10、thread_cache_size=300
服务器线程缓存,这个值表示可以重新利用保存在缓存中的线程数量,当断开连接时,那么客户端的线程将被放到缓存中以响应下一个客户而不是销毁(前提时缓存数未达上限),如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,这个线程将被重新请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能,通过比较Connections和Threads_created状态的变量,可以看到这个变量的作用。
设置规则如下:1G内存配置为8,2G内存为16.服务器处理此客户的线程将会缓存起来以响应下一个客户而不是被销毁(前提是缓存数未到达上限)

Threads_cached:代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected:代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
Threads_created:代表最近一次服务启动,已创建线程的数量,如果发现Threads_created值过大的话,说明MySQL服务器一直在创建线程,这也比较消耗资源,可以适当增加配置文件中thread_cache_size值
Threads_running:代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态。

3)配置Innodb的几个变量

11、innodb_buffer_pool_size
对于innodb表来说,innodb_buffer_pool_size的作用相当于key_buffer_size对于MyISAM表的作用一样。Innodb使用该参数指定大小的内存来缓冲数据和索引。最大可以把该值设置成物理内存的80%。

12、innodb_flush_log_at_trx_commit
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0,1,2.
实际测试发现,该值对插入数据的速度影响非常大,设置为2时插入10000条记录只需要两秒,设置为0时只需要一秒,设置为1时,则需要229秒。因此,MySQL手册也建议尽量将插入操作合并成一个事务,这样可以大幅度提高速度。

13、innodb_thread_concurrency=0
此参数用来设置innodb线程的并发数,默认值为0表示不被限制,若要设置则与服务器的CPU核心数相同或是CPU的核心数的2倍。

14、innodb_log_buffer_size
此参数确定日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小。

15、innodb_log_file_size=50M
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能。

16、innodb_log_files_in_group=3
为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3

17、read_buffer_size=1M
MySQL 读入缓冲区大小。对表进行顺序扫描的请求将分配到一个读入缓冲区MySQL会为他分配一段内存缓冲区

18、read_rnd_buffer_size=16M

MySQL 的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配到一个随机都缓冲区。进行排序查询时,MySQL会首先扫描一遍该缓冲区,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但是MySQL会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存消耗过大。
注:顺序读是根据索引的叶节点数据就能顺序的读取所需要的行数据。随机读是指一般需要根据辅助索引叶节点中的主键寻找侍其巷进行数据,而辅助索引和主键所在的数据端不同,因此访问方式是随机的。

19、bulk_insert_buffer_size=64M
批量插入数据缓存大小,可以有效的提高插入效率,默认为8M

20、binary log
binlog_cache_size=2M //为每个session分配的内存,在事务过程中用来存储二进制日志的缓存,提高记录bin-log的效率。
max_binlog_cache_size=8M //表示的是binlog能够使用的最大cache内存大小
max_binlog_size=512M //指定binlog日志文件的大小。不能将变量设置为大于1G或小于4096字节。默认值为1G.在导入大容量的sql文件时,建议关闭,sql_log_bin,否则硬盘扛不住,而且建议定期做删除。
expire_logs_days=7 //定义了mysql清除过期日志的时间

mysql 总结........................................................................................................................................6 1.1 数据库的种类...........................................................................................................6 1.1.1 关系型数据库介绍.................................................................................................6 1.1.2 非关系型数据库介绍.............................................................................................7 1.1.3 非关系型数据库种类.............................................................................................7 1.1.4 关系型数据库产品介绍.........................................................................................8 1.1.5 常用非关系型数据库产品介绍.............................................................................8 1.2 mysql 多实例安装实战......................................................................................................9 1.2.1 什么是 mysql 多实例? .........................................................................................9 1.2.2 mysql 的多实例结构图.........................................................................................10 1.2.3 实战安装 mysql 多实例需要的依赖包...............................................................10 1.2.4 安装编译 mysql 需要的软件...............................................................................10 1.2.5 安装 mysql 软件...................................................................................................11 1.2.6 创建存放两个 mysql 实例的数据目录...............................................................11 1.2.7 创建两个 mysql 多实例的配置文件...................................................................12 1.2.7.1 3306 的实例................................................................................................12 1.2.7.2 3307 的实例................................................................................................16 1.2.7.3 多实例本地登录 mysql .............................................................................20 1.2.7.4 远程连接登录 mysql 多实例....................................................................20 1.3 mysql 基础安全................................................................................................................21 1.3.1 启动程序设置 700,属主和用户组为 mysql .....................................................21 1.3.2 为 mysq 超级用户 root 设置密码........................................................................21 1.3.3 登录时尽量不要在命令行暴漏密码,备份脚本中如果有密码,给设置 700, 属主和用户组为 mysql 或 root......................................................................................21 1.3.4 删除默认存在的 test 库 .......................................................................................21 1.3.5 初始删除无用的用户,只保留 root 127.0.0.1 和 root localhost........................21 1.3.6 授权用户对应的主机不要用%,权限不要给 all,最小化授权,从库只给 select 权限.................................................................................................................................21 1.3.7 不要给一个用户管所有的库,尽量专库专用户...............................................21 1.3.8 清理 mysql 操作日志文件~/mysql_history.........................................................21 1.3.9 禁止开发获取到 web 连接的密码,禁止开发连接操作生产对外的库...........21 1.4.0 服务器禁止设置外网 IP ......................................................................................21 1.4.1 防 SQL 注入(WEB), php.ini 配置文件里面设置 ..........................................21 1.4.2 mysql 的备份的脚本给 700 的权限,并且属主和属组为 root..........................21 1.4 关于 mysql 的启动与关闭..............................................................................................21 1.4.1 单实例 MySQL 启动与关闭方法........................................................................21 1.4.2 多实例 MySQL 启动与关闭方法示例................................................................21 1.5 生产环境关闭 mysql 的命令..........................................................................................22 1.5.1 生产环境不能用强制命令关闭 mysql 服务 .......................................................22 1.5.2 下面来介绍优雅关闭数据库方法: ...................................................................22 1.6 登录 mysql 方法..............................................................................................................22 1.6.1 单实例 MySQL 登录的方法................................................................................22 1.6.2 多实例 MySQL 的登录方法................................................................................22 1.7 关于 mysql 管理员设置..................................................................................................22资源由 www.eimhe.com 美河学习在线收集分享 1.7.1 为管理员 root 用户设置密码并修改方法之一...................................................22 1.7.2 修改管理员 root 密码法二(sql 语句修改) .....................................................22 1.7.3 找回丢失的 mysql root 用户密码(单实例和多实例) ....................................23 1.8 SQL 结构化查询语言......................................................................................................23 1.8.1 什么是 SQL? ......................................................................................................23 1.8.2 SQL 语句最常见的分类一般就是 3 类 ...............................................................24 1.9 数据库的管理应用..........................................................................................................24 1.9.1 创建数据库...........................................................................................................24 1.9.2 查看库的字符集及校队规则...............................................................................24 1.9.3 企业场景创建什么字符集的数据库呢? ...........................................................26 1.9.4 显示数据库...........................................................................................................26 1.9.5 删除数据库...........................................................................................................26 1.9.6 进入数据库中指定的库.......................................................................................27 1.9.7 查看进入当前数据库的用户...............................................................................27 1.9.8 删除数据库多余的账号.......................................................................................27 1.9.9 查看数据库的用户...............................................................................................27 2.0.0 创建 MySQL 用户及赋予用户权限............................................................................27 2.0.1 使用语法:..............................................................................................................27 2.0.2 第一种创建用户及授权方法: ...........................................................................28 2.0.3 第二种创建用户及授权方法: ...........................................................................28 2.0.4 创建用户及授权哪个网段的主机可以连接 oldboy_gbk 库..............................29 2.0.4.1 第一种方法: .............................................................................................29 2.0.4.2 第二种方法: ............................................................................................29 2.0.5 关于 mysql 回收某个用户权限...........................................................................29 2.0.6 企业生产环境如何授权用户权限(mysql 主库) ............................................30 2.1 数据库表操作..................................................................................................................31 2.1.1 以默认字符集 latin1 建库....................................................................................31 2.1.2 建立表并查看表的结构.......................................................................................31 2.1.3 mysql 表的字符类型.............................................................................................32 2.1.3.1 数字类型.....................................................................................................32 2.1.3.2 日期和时间类型.........................................................................................32 2.1.3.3 字符串类型................................................................................................33 2.1.3.4 关于字符类型小结....................................................................................33 2.1.4 为表的字段创建索引...........................................................................................33 2.1.4.1 为表创建主键索引的方法........................................................................33 2.1.4.2 查看 student 表的结构 ..............................................................................34 2.1.4.3 怎么删除一个表的主键............................................................................34 2.1.4.4 利用 alter 命令修改 id 列为自增主键列..................................................34 2.1.4.5 建表后利用 alter 增加普通索引...............................................................34 2.1.4.6 对表字段的前 n 个字符创建普通索引....................................................36 2.1.4.7 为表的多个字段创建联合索引................................................................38 2.1.4.8 为表的多个字段的前 n 个字符创建联合索引........................................38 2.1.4.9 主键也可以联合多列做索引....................................................................39 2.1.5.0 统计一个字段列的唯一值个数................................................................40资源由 www.eimhe.com 美河学习在线收集分享 2.1.5.1 创建唯一索引(非主键) ........................................................................41 2.1.5.2 索引列的创建及生效条件........................................................................42 2.1.5 往表中插入数据...................................................................................................42 2.1.6 往表中删除一条数据...........................................................................................44 2.1.7 查询数据................................................................................................................44 2.1.7.1 查询表的所有数据行................................................................................44 2.1.7.2 查看 mysql 库的用户................................................................................45 2.1.7.3 根据指定条件查询表的部分数据............................................................45 2.1.7.4 根据固定条件查数据................................................................................46 2.1.7.5 指定固定条件范围查数据........................................................................46 2.1.7.6 根据顺序查看列数据................................................................................46 2.1.6.7 在表中根据条件导出数据至文件中........................................................47 2.1.8 多表查询...............................................................................................................47 2.1.8.1 创建学生表................................................................................................47 2.1.8.2 在学生表里插入数据.................................................................................47 2.1.8.3 创建课程表................................................................................................47 2.1.8.4 在课程表里插入数据................................................................................48 2.1.8.5 创建选课表................................................................................................48 2.1.8.6 联表查询命令............................................................................................49 2.1.9 使用 explain 查看 select 语句的执行计划..........................................................49 2.1.9.1 用查询语句查看是否使用索引情况........................................................49 2.1.9.2 为该列创建索引,再用查询语句查看是否走了索引............................50 2.2.0 使用 explain 优化 SQL 语句(select 语句)的基本流程..................................50 2.2.1 用命令抓取慢 SQL 语句,然后用 explain 命令查看查询语句是否走的索 引查询.....................................................................................................................50 2.2.2 设置配置参数记录慢查询语句...................................................................51 2.2.3 对抓取到的慢查询语句用 explain 命令检查索引执行情况 .....................51 2.2.4 对需要建索引的条件列建立索引...............................................................51 2.2.5 切割慢查询日志,去重分析后发给大家...................................................51 2.2.1 修改表中数据.......................................................................................................51 2.2.1.1 修改表中指定条件固定列的数据............................................................51 2.2.2 删除表中的数据...................................................................................................52 2.2.2.1 实践删除表中的数据................................................................................52 2.2.2.2 通过 update 伪删除数据...........................................................................53 2.2.3 增删改表的字段...................................................................................................53 2.2.3.1 命令语法及默认添加演示........................................................................53 2.2.4 更改表名...............................................................................................................55 2.2.5 删除表名...............................................................................................................56 2.2.6 mysql 数据库的备份与恢复.................................................................................56 2.2.6.1 备份单个数据库练习多种参数使用........................................................56 2.2.6.2 查看数据库 oldboy 的内容.......................................................................56 2.2.6.3 执行备份的命令........................................................................................57 2.2.6.4 查看备份的结果........................................................................................57 2.2.6.5 mysqldump 备份时加上-B 参数时的备份,然后比较不加-B 备份的不同资源由 www.eimhe.com 美河学习在线收集分享 .................................................................................................................................57 2.2.6.6 删除数据库中备份过的库 oldboy,然后将备份的数据重新导入数据库 .................................................................................................................................58 2.2.6.7 利用 mysqldump 命令对指定的库进行压缩备份...................................59 2.2.6.8 利用 mysqldump 命令备份多个库(-B 参数后可以指定多个库) ......59 2.2.6.9 分库备份(对 mysql、 oldboy、 oldboy_gbk、 wordpress 库进行备份) .................................................................................................................................60 2.2.7.0 对一个库的多个表备份............................................................................60 2.2.7.1 备份多个表................................................................................................61 2.2.7.2 备份单个表................................................................................................61 2.2.7.3 关于 mysqldump 的参数说明...................................................................61 2.2.7.4 刷新 binglog 的参数..................................................................................62 2.2.7.5 生产场景不同引擎 mysqldump 备份命令...............................................62 2.2.8 恢复数据库实践...................................................................................................63 2.2.8.1 数据库恢复事项........................................................................................63 2.2.8.2 利用 source 命令恢复数据库 ...................................................................63 2.2.8.3 利用 mysql 命令恢复(标准) ................................................................64 2.2.8.4 针对压缩的备份数据恢复........................................................................66 2.2.9 实现和 mysql 非交互式对话...............................................................................66 2.2.9.1 利用 mysql –e 参数查看 mysql 数据库的库名........................................66 2.2.9.2 利用 mysql –e 参数查看 mysql 数据库的线程状态................................66 2.2.9.3 mysql sleep 线程过多的问题案例............................................................66 2.2.9.4 查看 mysql 配置文件有没有在数据库中生效 ........................................67 2.2.9.5 不重启数据库修改数据库参数................................................................68 2.2.9.6 不重启数据库更改数据库参数小结........................................................69 2.3.0 查看 mysql 状态的信息(利用 zabbix 可以监控其状态信息) .......................69 2.3.1 mysqladmin 的命令...............................................................................................75 2.3.2 mysql 工具 mysqlbinlog........................................................................................76 2.3.2.1 mysql 的 binlog 日志是什么? ..................................................................76 2.3.2.2 mysql 的 binlog 日志作用是什么? ..........................................................76 2.3.2.3 mysqlbinlog 工具解析 binlog 日志实践....................................................76 2.3.2.4 解析指定库的 binlog 日志........................................................................76 2.3.3 mysql 数据库的服务日志.....................................................................................77 2.3.3.1 错误日志(error log)介绍与调整..........................................................77 2.3.3.2 普通查询日志(general query log)介绍与调整(生产环境中不用) 77 2.3.3.3 慢查询日志介绍与调整............................................................................78 2.3.3.4 二进制日志介绍与调整............................................................................78 2.3.4 mysql 的 binlog 有三种模式.................................................................................78 2.3.4.1 row level......................................................................................................78 2.3.4.2 statement level(默认) ..................................................................................79 2.3.4.3 Mixed ..........................................................................................................79 2.3.5 企业场景如何选择 binlog 的模式.......................................................................79 2.3.6 设置 mysql binlog 的格式....................................................................................79 2.3.7 mysql 生产备份实战应用指南.............................................................................80资源由 www.eimhe.com 美河学习在线收集分享 2.3.7.1 全量备份....................................................................................................80 2.3.7.2 增量备份....................................................................................................80 2.3.7.3 企业场景和增量的频率是怎么做的? ....................................................81 2.3.7.4 mysql 增量恢复必备条件..........................................................................81 2.3.7.5 实战模拟凌晨 00 点对 oldboy库做个全备,早上 10 点左右删除了 oldboy 库,下面是其恢复过程.........................................................................................81 2.3.7.6 实战模拟凌晨 00 点对 oldboy库做个全备,早上 10 点左右更新了 oldboy 库的 test 表中所有字段数据,下面是其恢复过程(update 表中的数据的时候, 把表中的字段换成了一个相同的内容,这时候要停库) .................................83 2.3.8 mysql 的主从复制的结构图.................................................................................85 2.3.8.1 单向的主从复制图,此架构只能在 master 端进行数据写入(生产环境 可以使用) .............................................................................................................85 2.3.8.2 双向的主主同步逻辑图,此架构可以在 master1 端或 master2 端进行数 据写入(生产环境不建议使用) .........................................................................85 2.3.8.3 线性级联单向双主同步逻辑图,此架构只能在 master1 端进行数据写入 (生产环境可以使用) .........................................................................................86 2.3.8.4 环状级联单向多主同步逻辑图,任意一个都可以写入数据(生产环境 不建议使用) .........................................................................................................86 2.3.8.5 环状级联单向多主多从同步逻辑图,此架构只能在任意一个 master 端 进行数据写入(生产环境不建议使用) .............................................................86 2.3.9 mysql 主从复制的原理.........................................................................................86 2.4.0 mysql 主从复制的原理图.....................................................................................87 2.4.1 mysql 主从复制的实践.........................................................................................87 2.4.1.1 环境准备....................................................................................................87 2.4.1.2 分别查看 3306 和 3307 不同数据库有哪些库........................................87 2.4.1.3 全量备份 3306 数据库的库,然后到 3307 数据库中............................88 2.4.1.4 在 3306 数据库上授权用户可以到 3306 数据库上复制 binlog.............89 2.4.1.5 在 3307 数据库上开启复制 3306 的 binlog 开关,并查看是否处于同步 状态.........................................................................................................................89 2.4.1.6 在 3306 上创建数据库 zhangxuan,看 3307 上是否同步过来..............91 2.4.2 关于主从复制出现故障怎么解决.......................................................................92 2.4.3 主从复制延迟问题原因及解决方案...................................................................92 2.4.3.1 一个主库的从库太多,导致复制延迟....................................................92 2.4.3.2 从库硬件比主库差,导致复制延迟........................................................92 2.4.3.3 慢 SQL 语句过多 ......................................................................................92 2.4.3.4 主从复制的设计问题................................................................................93 2.4.3.5 主从库之间的网络延迟............................................................................93 2.4.3.6 主库读写压力大,导致复制延迟............................................................93 2.4.4 通过 read-only 参数让从库只读访问..................................................................93 2.4.5 web 用户专业设置方案: mysql 主从复制读写分离集群..................................93 2.4.6 让 mysql 从库记录 binlog 日志方法...................................................................94 2.4.7 mysql 主从复制集群架构的数据备份策略.........................................................94 2.4.8 mysql 一主多从,主库宕机,从库怎么接管.....................................................95 2.4.8.1 半同步从库(谷歌半同步插件 5.5 版本自带) .....................................95资源由 www.eimhe.com 美河学习在线收集分享 2.4.8.2 S1,啥也不干只做同步的从库, 500 台服务器,百度..........................95 2.4.8.3 皇帝驾崩现选(耽误事,容易被篡位) ................................................95 2.4.9 事务介绍...............................................................................................................97 2.4.9.1 事务的四大特性(ACID) ......................................................................97 2.4.9.2 事务的开启................................................................................................97 2.4.9.3 事物的实现................................................................................................98 2.5.0 mysql 引擎概述.....................................................................................................98 2.5.0.1 什么是存储引擎? ....................................................................................98 2.5.0.2 mysql 存储引擎的架构..............................................................................99 2.5.0.3 myisaw 引擎介绍 .......................................................................................99 2.5.0.4 myisaw 引擎特点 .......................................................................................99 2.5.1 myisaw 引擎调忧精要 ........................................................................................100 2.5.2 innodb 引擎..........................................................................................................100 2.5.2.1 什么是 innodb 引擎? .............................................................................100 2.5.2.2 innodb 引擎特点.......................................................................................101 2.5.2.3 innodb 引擎适应的生产业务场景...........................................................102 2.5.2.4 关于 innodb 引擎的一些参数设置.........................................................102 2.5.2.5 innodb 引擎调忧精要...............................................................................102 2.5.3 有关 mysql 引擎特别说明.................................................................................103 2.5.4 关于 mysql 的字符集.........................................................................................103 2.5.4.1 mysql 常见的字符集? ............................................................................103 2.5.4.2 mysql 如何选择合适的字符集? ............................................................103 2.5.4.3 如何查看字符集......................................................................................103 2.5.4.4 不同字符集参数的含义如下(要想数据库字符不乱码,下面几个字符 集要相同) ...........................................................................................................104 2.5.4.5 set names 字符集名,此命令有什么作用 .............................................105 2.5.4.6 根据配置文件更改客户端字符集..........................................................105 2.5.4.7 更改 mysql 服务端的字符集..................................................................106 2.5.4.8 怎么解决乱码问题..................................................................................106 2.5.4.9 插入数据不乱码的方法..........................................................................106 2.5.5.0 更改数据库的字符集..............................................................................106 2.5.5.1 更改表的字符集......................................................................................106 2.5.6 模拟将 latin1 字符集的数据库修改成 UTF8 字符集的实际过程 ..................107
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值