论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
Mysql--运维篇--日志管理(毗连层,SQL层,存储引擎层, ...
Mysql--运维篇--日志管理(毗连层,SQL层,存储引擎层,文件存储层) ...
惊雷无声
金牌会员
|
2025-1-13 00:48:53
|
显示全部楼层
|
阅读模式
楼主
主题
884
|
帖子
884
|
积分
2652
MySQL提供了多种日志范例,用于记录差别的活动和事件。这些日志对于数据库的管理、故障清除、性能优化和安全审计非常紧张。
一、错误日志 (Error Log)
作用:
记录MySQL服务器启动、运行和制止期间遇到的问题和错误信息。
查看:
默认情况下,错误日志的位置可以通过show variables like ‘log_error’;命令来查看。
或者直接在设置文件(通常是my.cnf或my.ini)中查找log_error变量的值。
示例:
show variables like 'log_error';
复制代码
运行效果:
找到路径,打开文件:
二、查询日志 (General Query Log)
作用:
记录所有发送到服务器的SQL语句,包罗查询、更新等操纵。它可以资助你相识用户执行了哪些操纵,但开启后会影响性能,因此通常只在调试时使用。
查看:
可以通过SHOW VARIABLES LIKE ‘general_log%’;来查看是否启用了查询日志以及它的位置。
使用SET GLOBAL general_log = ‘ON’;启用查询日志,SET GLOBAL general_log = ‘OFF’;禁用。
日志内容可以及时查看,比方tail -f /path/to/mysql.log。
示例:
SHOW VARIABLES LIKE 'general_log%';
复制代码
运行效果:
三、慢查询日志 (Slow Query Log)
作用:
记录那些执行时间超过指定阈值的SQL查询。这对于辨认和优化性能瓶颈非常有用。
查看:
使用SHOW VARIABLES LIKE ‘slow_query_log%’;来查抄慢查询日志的状态和位置。
SET GLOBAL slow_query_log = ‘ON’;启用慢查询日志,SET GLOBAL slow_query_log = ‘OFF’;禁用。
你可以设置long_query_time变量来界说“慢”的标准,默认是10秒,但是可以通过SET GLOBAL long_query_time = N;调整,其中N是你想要的时间秒数。
还可以使用mysqldumpslow工具或者第三方工具如pt-query-digest来分析慢查询日志。
示例:
SHOW VARIABLES LIKE 'slow_query_log%';
复制代码
运行效果:
四、二进制日志 (Binary Log, Binlog)
作用:
记录所有对数据库结构或数据进行更改的操纵(DDL和DML),好比INSERT、UPDATE、DELETE等。重要用于复制(Replication)、恢复(Recovery)和审计(Audit)。
查看:
使用SHOW BINARY LOGS;
列出所有的二进制日志文件。
使用SHOW MASTER STATUS;查看当前正在使用的二进制日志文件。
使用mysqlbinlog工具读取息争析二进制日志的内容,比方mysqlbinlog /path/to/binlog-file。
示例:
SHOW BINARY LOGS;
复制代码
运行效果:
五、中继日志 (Relay Log)
作用:
在主从复制环境中,从库会将主库的二进制日志中的事件复制到自己的中继日志中,然后再应用这些事件。这使得从库可以或许与主库保持同步。
查看:
使用SHOW SLAVE STATUS;可以查看有关从库状态的信息,包罗中继日志的文件名和位置。
类似于二进制日志,可以使用mysqlbinlog工具来查看中继日志的内容。
六、重做日志 (InnoDB Redo Log)
1、概述
重做日志是InnoDB用于确保事件持久性的关键组件。它记录了所有对数据页的物理修改操纵,确保在体系崩溃后可以重新应用这些修改,恢复数据的同等性。
特点:
位置:重做日志文件通常位于ib_logfile0和ib_logfile1中。
Redo日志不是文本格式的日志,不能直接查看其内容。
巨细:每个重做日志文件的巨细由innodb_log_file_size参数控制,默认值为48MB。
数目:可以通过innodb_log_files_in_group参数指定重做日志文件的数目,默认为2。
2、工作原理
(1)、记录修改:每当对数据页进行修改时,InnoDB会先将修改操纵记录到重做日志中。重做日志记录的是物理修改,而不是逻辑操纵。
(2)、循环写入:重做日志采用循环写入的方式。当一个日志文件写满后,InnoDB会切换到下一个日志文件继续写入。所有日志文件写满后,InnoDB会回到第一个日志文件,覆盖旧的日志记录。
(3)、查抄点(Checkpoint):为了防止重做日志被无限期地循环覆盖,InnoDB使用查抄点机制。查抄点是指重做日志的某个位置,所有在此之前修改的数据页都必须已经刷新到磁盘。通过这种方式,InnoDB可以确保在体系崩溃后可以或许从查抄点开始恢复数据。
(4)、崩溃恢复:在体系崩溃后,InnoDB会在启动时读取重做日志,重新应用未完成的事件,恢复数据的同等性。这个过程称为前滚恢复(Roll Forward Recovery)。
3、设置参数
innodb_log_file_size:
功能:设置每个重做日志文件的巨细。
推荐值:建议根据工作负载调整。对于高并发写入场景,可以恰当增大该值,以减少日志切换的频率。默认值为48MB。
innodb_log_files_in_group:
功能:设置重做日志文件的数目。
推荐值:默认为2,通常不需要调整。如果需要更大的日志空间,建议增加单个日志文件的巨细,而不是增加日志文件的数目。
innodb_flush_log_at_trx_commit:
功能:控制事件提交时是否立即刷新重做日志到磁盘。
取值:
0:不刷新重做日志,性能最好,但安全性最低。如果体系崩溃,可能会丢失最近的事件。
1(默认):每次事件提交时都刷新重做日志到磁盘,确保数据的安全性,但性能稍差。
2:每次事件提交时将重做日志写入操纵体系缓存,但不立即刷新到磁盘。恰当追求性能的场景,但在体系崩溃时可能会丢失最近的事件。
innodb_log_buffer_size:
功能:设置重做日志缓冲区的巨细。重做日志缓冲区用于暂存尚未写入磁盘的重做日志记录。
推荐值:默认为8MB,可以根据工作负载恰当调整。较大的缓冲区可以减少磁盘I/O次数,提拔写性能。
4、优化建议
增大innodb_log_file_size:对于高并发写入场景,建议增大重做日志文件的巨细,以减少日志切换的频率。较大的日志文件可以容纳更多的事件,减少磁盘I/O次数。
调整innodb_flush_log_at_trx_commit:根据应用场景选择符合的值。如果你的应用对数据安全要求较高,建议保持默认值1;如果你的应用对性能要求较高,且可以容忍少量数据丢失,可以选择2或0。
使用O_DIRECT刷新方法:通过innodb_flush_method = O_DIRECT设置,绕过操纵体系的缓存,直接将重做日志写入磁盘,减少双重缓存问题,提拔性能。
七、回滚日志 (InnoDB Undo Log)
1、概述
回滚日志是InnoDB用于实现事件的回滚和多版本并发控制(MVCC)的关键组件。它记录了事件的旧版本数据,确保未提交的事件不会影响数据库的状态,并支持多个事件同时读取差别的数据版本。
作用:Undo日志保存了旧版本的数据,以便在需要时回滚事件或提供多版本并发控制(MVCC)。这对于包管事件的ACID特性至关紧张。
特点:
位置:回滚段存储在体系UNDO表空间中,通常是ibdata1文件的一部分。
和Redo日志一样,Undo日志也不是以文本形式存储的,所以不能直接查看。
范例:
插入回滚段:用于记录插入操纵的旧版本数据。
更新回滚段:用于记录更新操纵的旧版本数据。
2、工作原理
(1)、记录旧版本数据:每当对数据进行插入、更新或删除操纵时,InnoDB会将旧版本数据记录到回滚日志中。这些旧版本数据用于实现事件的回滚和多版本并发控制(MVCC)。
(2)、事件回滚:如果事件未提交或发生错误,InnoDB可以根据回滚段中的旧版本数据,将数据恢复到事件开始时的状态。
(3)、多版本并发控制(MVCC):InnoDB使用回滚段来支持多版本并发控制。当多个事件同时读取同一行数据时,InnoDB会根据事件的隔离级别返回符合的数据版本。比方,在读已提交(Read Committed)隔离级别下,事件只能看到已经提交的数据;而在可重复读(Repeatable Read)隔离级别下,事件在整个生命周期内都能看到雷同的数据版本。
(4)、清算旧版本数据:当事件提交后,回滚段中的旧版本数据不再需要,InnoDB会定期清算这些数据,释放空间。
3、设置参数
innodb_undo_tablespaces:
功能:设置独立的回滚表空间的数目。启用该参数后,回滚段将存储在独立的.ibd文件中,而不是体系表空间中。(表空间中包含三种范例:数据,索引,回滚段)
推荐值:默认为0,表示回滚段存储在体系表空间中。如果你有大量长时间运行的事件,建议启用独立的回滚表空间,以减少体系表空间的碎片化问题。
innodb_undo_log_truncate:
功能:控制是否定期截断回滚段。启用该参数后,InnoDB会定期清算不再需要的回滚段,释放空间。
推荐值:默认为OFF,建议在生产环境中启用该参数,以减少回滚段的占用空间。
innodb_max_undo_log_size:
功能:设置回滚段的最大巨细。当回滚段超过该巨细时,InnoDB会自动截断回滚段,释放空间。
推荐值:默认为1GB,可以根据工作负载恰当调整。
4、优化建议
启用独立回滚表空间:如果你有大量长时间运行的事件,建议启用独立的回滚表空间,以减少体系表空间的碎片化问题。独立的回滚表空间可以更好地管理和优化回滚段的存储。
定期截断回滚段:启用innodb_undo_log_truncate参数,定期清算不再需要的回滚段,释放空间。这有助于减少回滚段的占用空间,提拔性能。
调整回滚段巨细:根据工作负载调整innodb_max_undo_log_size参数,确保回滚段不会占用过多的空间。对于大事件或长事件较多的场景,可以恰当增大该值。
八、审计日志 (Audit Log)
作用:
记任命户的登录实验、权限变更和其他安全干系的活动。并不是所有版本的MySQL都自带审计日志功能,某些企业版可能包含这个特性,或者可以通过插件实现。
查看:
如果安装了审计插件,可以通过特定的命令或API来访问审计日志。
详细的查看方法取决于所使用的插件或办理方案。
乘风破浪会偶然,直挂云帆济沧海!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
惊雷无声
金牌会员
这个人很懒什么都没写!
楼主热帖
基于 Sealos 的镜像构建能力,快速部署 ...
蚂蚁金服杨军:蚂蚁数据分析平台的演进 ...
Linux之iptables(NAT表)——实验篇 ...
Linux(CentOs7)基础配置及安装本地yum ...
记一次实战 Shiro反序列化内网上线 ...
数据湖(一):数据湖概念
超融合走向红海,下一代超融合是新蓝海 ...
1亿条数据批量插入 MySQL,哪种方式最 ...
学习TraceLogging事件,使用ETW记录, ...
Neo4j
标签云
挺好的
服务器
快速回复
返回顶部
返回列表