参数文件 日志文件(错误日志 慢查询日志 二进制日志)

参数文件:通知Mysql实例在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置以及各种参数类型

日志文件:记录Mysql实例对某种条件做出响应时写入的文件 errorlog  binlog slow-query-log query-log

socket文件:UNIX域套接字方式 进行连接时需要的文件

pid文件:Mysql实例的进程ID文件

MySQL表结构文件:存放Mysql表结构定义文件

存储引擎文件:因为Mysql表存储引擎的关系 每个存储引擎都会有自己的引擎保存数据 真正存储记录和索引等数据。

 

------------------------------在mysql中查看参数文件--------------------------------------------

参数文件:在实例启动时候 找到指定数据库文件的位置 指定初始化参数 

Mysql实例可以不需要参数文件 找的是默认的数据库目录mysql架构

 

 

mysql> use information_schema

mysql> select * from global_variables where variable_name like 'innodb_buffer%'\G;

--2.show variables like '%xxxx'\G

 

注意:没有像oracle一样有隐藏参数

 

--参数类型

参数分类:dynamic (可以在运行实例周期内进行修改)static参数(在整个实例生命周期内不得修改)

调配参数 : set   xxxx = xxx ;

(参数有效位置  在生存周期  2.在会话 3.会话+生命周期生效)

--设置全局/会话参数

 

set @@global|@@session 来更改

select @@global.read_buffer_size= 524288\G;

select @@session.read_buffer_size = 524288\G;

--修改静态参数只能在该会话进行更改 待到下一次开启mysql实例时,则恢复默认配置 要彻底修改 设置为静态参数(添加到初始化参数文件中去)。

--Mysql所有动态变量的可修改范围,可以参考Mysql官方手册 Dynamic System Variables

 

--------------------------------日志文件----------------------------------------

--错误日志error log

--二进制日志  binlog

--慢查询日志 slow query log

--查询日志  log

 

--错误日志error log

对MySQL的启动 运行 关闭过程进行了记录。遇到问题首先查看该文件 定位问题。记录了所有的错误信息和警告信息和正确的信息  

mysql> show variables like 'log_error'\G;

system hostname   

 

注意:Mysql重启不了 首先需要看errorlog

-----------------二进制日志  binlog------------------------

记录对Mysql数据库执行更改的所有操作  但不包括SELECT 和SHOW操作 有些操作本身没有导致数据库发生变化 也会写入二进制日志中去。

 

show variable like '%log_bin%';

--log_bin off状态

在my.cnf文件中开始查询

添加 log_bin = "/log/bin_log/binlog"(注意创建并且修改权限)

重启即可

mysql> show variables like '%log_bin%';

mysql> SHOW MASTER STATUS;

mysql> SHOW BINLOG EVENTS IN 'binlog.000001';

 

二进制日志有以下作用:recovery(恢复) replication(复制) 审计(audit) 

 

binlog.index为二进制的索引文件 用来存储过往产生的二进制日志序号  通常不建议手工修改这个文件

 

----------影响二进制日志记录的信息行为的参数-------------------------------

max_binlog_size  :指定单个二进制日志文件最大值 超过这个值 产生新的二进制文件 默认1G

binlog_cache_size:使用事务表存储引擎 所有未提交的二进制日志 被记录到一个缓存中 等提交后将缓冲的二进制日志写入二进制日志文件 缓存大小 default=32K  基于session  开启一个线程会自动分配缓存 需要小心该设置

当超过该值时候,写入到一个临时文件

-----------------------------

mysql> SHOW GLOBAL STATUS LIKE 'binlog_cache%';

mysql> SHOW VARIABLES LIKE 'binlog_cache_size';

----------------------------------------------------------------------------------------------------

sync_binlog:每写缓冲多少次就同步到磁盘  sync_binlog=1 表示采用同步写磁盘的方式来写二进制日志 写操作不使用操作系统的缓冲写二进制日志

default=0 使用InnoDB存储引擎进行复制 得到最大高可用性 建议设为ON 会对数据库的IO带来一定影响

question:当在commit前 sync_binlog=1 二进制日志写入磁盘 已经写入二进制日志 未发生commit同时发生宕机 下次启动会将事务回滚掉 解决:innodb_support_xa=1 确保了二进制日志和InnoDB存储引擎数据文件的同步

binlog_do-db | binlog-ignore-db:需要写入或忽略写入哪些库的日志 默认NULL 需要同步所有库的日志到二进制日志中去

若当前数据库是复制中的slave 不会把从master取得二进制日志写到自己的二进制日志中去 若需要写入  设置log-slave-update 

 

log-slave-update

binlog_format:影响记录二进制日志的格式

此处参考事务隔离级别

https://blog.csdn.net/ichglauben/article/details/81180772

1.)5.1之前 基于SQL语句 statement级别 2.)对复制有要求 在运行不确定函数 rand uuid中 导致主从服务器上表中数据的不一致 3.)默认隔离级别 repeatable read  若使用 read committed 会丢失类似更新的现象 出现主从数据库上数据不一致

得出结论 并发和一致性是对立的

5.1之后添加  STATMENT  MIXED ROW格式 

row格式:1)记录表的行更改情况 2.)对statement格式下复制问题解决 3)将InnoDB设置为READ COMMITTED,以获得更好的并发性。  

MIXED格式:默认采用STATEMENT 格式 有些情况使用ROW格式  

--以下情况

存储引擎NDB 使用

----------------慢查询日志 slow query log------------------

可以帮助DBA定位可能存在问题的SQL语句 进行SQL语句层面的优化

--解决方案:在Mysql启动设置阈值 超过运行时间所有的SQL语句都记录到慢查询日志文件中去。

DBA确认确认是否有SQL语句需要优化

参数:long_query_time  default = 10

默认情况:不开启慢查询日志   手工设置参数

mysql> show variables like 'long_query_time'\G;

*************************** 1. row ***************************

Variable_name: long_query_time

        Value: 10.000000

mysql> show variables like '%slow%'\G;

--当运行SQL时间=long_query_time时候 不会记录进log的

 

log_queries_not_using_indexes (首先检查)运行的SQL语句没有使用索引 MySQL数据库将SQL语句记录到慢查询日志中去

 

log_throttle_queries_not_using_indexes::表示每分钟允许记录到slow log的且未使用索引的SQL语句次数

默认没有限制   在生产环境 若无索引使用 此类SQL语句将频繁录入日志中 导致日志增加。

 

mysqldumpslow:在mysql数据库服务器运行时间增加 更多的SQL查询被记录到慢查询日志文件中,需要直观分析该文件 

可以得到执行时间最长的10条SQL语句  

mysqldumpslow  -s al -n 10 xxxxxx

 

直观 慢查询表 mysql  ---  slow_log

mysql> SHOW CREATE TABLE mysql.slow_log\G;

log_output指定慢查询输出格式 默认FILE 将其设为TABLE 使用mysql--查看表结构了

 

mysql> SHOW VARIABLES LIKE 'log_output'\G;      

mysql> SET GLOBAL log_output='TABLE';

mysql> SHOW VARIABLES LIKE 'log_output'\G;

mysql> SELECT * FROM mysql.slow_log;

 

--在测试库阶段 设置

show variables like '%time%';

show variables like '%slow%';

将时间设置为 0.01S

 

 

--SHOW CREATE TABLE mysql.slow_log;

查看到CSV引擎存储的

--将其改为MyISAM 并且start_time列上添加索引 进一步提高查询效率

--1.关闭慢日志  2.修改引擎

mysql> set global slow_query_log=off;

mysql> ALTER TABLE mysql.slow_log ENGINE=MyISAM;

 

--网易版本的InnoSQL:加强了SQL语句的捕获方式  在slow log基础上添加了对于逻辑读取(物理读取+缓冲池) 物理读取(从磁盘进行IO读取的次数)的统计

--long_query_io将超过指定逻辑IO次数的SQL语句记录到slow log中。该值默认为100 

--slow_query_type 表示启用slow log的方式 可选值:

0(不运行) 1(根据运行时间) 2(根据逻辑IO次数) 3(运行时间+逻辑IO次数)

 

 

--查询日志  log(general log)

查询日志记录了所有对MySQL数据库请求的信息,无论请求是否得到正确执行  默认文件名:主机名.log

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值