搜尋
首頁資料庫mysql教程MySQL 日志的类型

MySQL日志类别
一般查询日志:log,general_log,log_output
慢查询日志:查询执行的时长超过指定的查询,即为慢查询;
错误日志:通常时指错误日志的相关信息,通常用服务器关闭和启动的日志信息,服务器运行过程中的错误信息,还可以记录警告信息。
二进制日志:只是跟修改相关的操作,可以理解为一个重做日志,用于复制的基本凭据;
中继日志:它其实跟复制相关的,与二进制日志几乎相同;

事物日志:随机I/O转换为顺序I/O,一般在两个文件存储,一个存满了就换另外一个存

查询日志

log={ON|OFF} # 是否记录所有语句的日志信息于一般查询日志文件(general_log)中;log_output={TABLE | FILE | NONE} # 定义log保存形式,none表示不保存日志;table和file可以同时出现,用逗号分隔即可;general_log={ON|OFF} # 是否启动查询日志;general_log_file # 定义一般查询日志保存的文件;mysql > SET GOLBAL general_log ={OFF|ON};启用或关闭一般查询日志mysql > SET GLOGAL log_output=’TABLE’;选项可以控制log的存放方法,table表示以表格的方式存放。

注:

  • 若想开启查询日志,则log和general_log参数都必须处于ON状态;

  • 对于繁忙的MySQL,不建议开启此日志;

慢查询日志:查询执行时长超过指定时长的查询,即为慢查询

long_query_time # 定义慢查询的时长;slow_query_log {ON|OFF} # 全局参数,设定是否启用慢查询日志;它的输出位置也取决于log_output的值;slow_query_log_file # 定义日志文件路径及名称;log_slow_filter # 慢查询日志过滤类型;log_slow_queries # 是否启用慢查询日志,会话级别的;log_rate_limit=1 # 定义其日志记录速率;log_slow_verbosity # 是否记录详细格式的日志信息;

错误日志

主要记录内容

  • 服务器启动和关闭过程中的信息;

  • 服务器运行过程中的错误信息;

  • 事件调度器运行一个事件时产生的信息;

  • 在复制架构中从服务器上启动从服务器线程时产生的信息;

参数设定

log_error = /path/to/error_log_file # 定义错误日志文件log_warnnings = {1|0} # 是否记录警告信息于错误日志中

二进制日志

记录了对MySQL数据库进行的修改操作,,影响数据潜在的内容的信息,select的是不会被记录到二进制日志的,二进制日志也叫复制日志,默认在数据目录下,专门查看日志的命令是:mysqlbinlog

功能:1、做时间点恢复,要想从哪个时间点恢复我们可以手动调的,所以这是一个备份恢复的重要工具

2、 mysql主从复制架构中使用;

因为我们的MySQL数据是单进程多线程的工作机制,所以他可以同时发起很多们修改的语句,但是我们服务器使用的日志只有一个,那如果同时进行的多个线程 的请求都同时往日志文件中写数据,日志文件就成了资源热点,也叫资源征用点,那就会混乱不堪,为了解决这种问题,这里,当我们的线程要往二进制日志文件中 写数据的时候,它不是直接写到日志文件中去,还是统一写到日志缓冲区中,由日志缓冲区逐一写入日志文件中去,然而我们的日志文件对于一个很繁忙的服务器来 讲,每天都会产生很大的数据量,如果所有的二进制日志数据都写在一个日志文件中,那管理起来就特点的不方便了,也很不合理,如是日志文件丢失,那所有的日 志数据信息都丢失了,不应该这么做,那我们就有日志滚动的机制了,二进制日志我们可以自己定义,有两种定义日志滚致力的方法,一种是按大小来定义的,比如 说我们定义一个日志文件的大小为1G,那他存储一了大概1G左右就会滚动,使用下一个日志来存放二进制日志数据;另一种可以按时间来定义的,比如说一周滚 动一次,或者说一个月,一天滚动一次都可以;或者每次重启服务时或者执行FLUSH LOGS命令时都会滚动一次日志。

MariaDB [(none)]> SHOW MASTER STATUS;可以查看当前服务器正在使用的二进制日志文件以及下一下个事件开始时基于的位置Position,如果当前使用的是00004,那么00001、2、3将不会再被使用,因为已经被滚动过去了。MariaDB [hellodb]> SHOW BINARY LOGS;查看当前系统上所有的的二进制日志文件,其实就是数据目录下mysql-bin.index文件中的信息,这个文件就是保存已经滚动过的日志文件的条目。MariaDB [hellodb]> flush logs;清除日志文件的命令:PURGEMariaDB [hellodb]> show binlog events in ‘log_file’;# mysqlbinlog--start-time--stop-time--start-# mysqlbinlog --start-protion=1139 mysql-bin.000001:在命令行中查看某个日志文件的某个位置点往后所记录的数据信息。可以用输出重定向保存到某个文件中去将来用于执行的。server-id:服务器的身份标识,MariaDB [hellodb]> SELECTVERSION();查看当前数据库的版本MariaDB [(none)]> SHOW BINLOG EVENTS IN 'mysql-bin.000001' FROM 1139;查看某个二进制日志文件中从哪个位置往后发生的事件信息。MariaDB [(none)]> SHOW BINLOG EVENTS IN 'mysql-bin.000006'/G查看某个二进制文件中在所有时间点和结束点等相关的信息。 

MySQL记录二进制日志的格式

statement:基于语句

  • 缺陷:执行带时间函数的语句时,会导致主从服务器执行结果不一致;

  • 如 insert into tb1 value (current_date());

row:基于行

  • 缺陷:批量更新操作将导致从服务器进行更多的操作 update tb2 set salary=salary+1000;

  • mixed:混合模式,由MySQL自行判断选择适合的方式基于语句或基于行记录日志;

二进制日志文件的内容格式

  • 事件发生的日期和时间

  • 服务器id:server_id

  • 事件的结束位置:end_log_pos

  • 事件的类型:如Query,GTID等

  • 原服务器生成此事件时的线程id:thread_id

  • 语句的时间戳和写入二进制日志文件的时间差,exec_time

  • 错误代码:error_code

  • 事件位置:at #,相当于下一事件的开始位置

设定参数

og_bin = {ON|OFF|FileName} # 全局变量,控制二进制文件位置log_bin_trust_function_creators # 全局变量,仅在启用二进制日志时有效,用于控制创建存储函数时如果会导致不安全的事件是否禁止创建存储函数sql_log_bin = {ON|OFF} # 会话级别,用于控制二进制日志信息是否记录进日志文件sync_binlog # 设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次;binlog_format={statement|row|mixed} # 指定二进制日志的类型max_binlog_cache_size= # 二进制日志缓冲空间大小,仅用于缓冲事务类的语句, 其上限由max_binlog_stmt_cache_size决定max_binlog_size= # 二进制日志文件大小上限,单位字节,默认大小1G# 注:切勿将二进制日志与数据文件放在同一磁盘上,减少磁盘I/O

中继日志:它其实跟复制相关的,与二进制日志几乎相同,只不过它不是用于记录事件的,而是作为读取数据的源并且在本地执行的,当然中继日志是在从服务器上。

设定参数

MariaDB [hellodb]> SHOW GLOBAL VARIABLES LIKE '%relay%';查看中继日志的相关参数信息

relay_log=file_name # 设定中继日志的文件名称relay_log_index=file_name # 设定中继日志的索引文件名,默认为为数据目录中的host_name-relay-bin.indexrelay_log_purge={ON|OFF} # 是否自动清理不再需要的中继日志relay_log_space_limit= # 设定用于存储所有中继日志文件的可用空间大小,0表示不限制<br><code>relay_log_recovery:跟中继日志自动恢复相关的</code><br><code>relay_log={空}:是否启用中继日志的</code>

事务日志

  • 暂存事务提交的数据,实现将随机I/O转换成顺序I/O;

  • 事务数据提交流程:innodb_buffer-->事务日志-->数据文件;

  • 事务日志文件组,至少应该有2个日志文件,一般保存在数据目录下,为ib_logfile0和ib_logfile1;

注意事项

  • 尽可能使用小事务以提升事务引擎的性能;因为事务越大,回滚开销越大;

  • 崩溃恢复:将提交的事务从事务日志中同步至数据文件,将未提交的事务执行回滚操作,以保证数据一致性;

  • 避免磁盘故障导致事务文件丢失:对事务日志所在的磁盘做数据镜像;

  • 事务日志文件和数据文件应分离存放:防止对同一磁盘过于频繁的I/O操作;

设定参数

wKioL1NXy6fi3sQ1AANpGEcPAlk406.jpg

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL的角色:Web應用程序中的數據庫MySQL的角色:Web應用程序中的數據庫Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

mysql:構建您的第一個數據庫mysql:構建您的第一個數據庫Apr 17, 2025 am 12:22 AM

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL:一種對數據存儲的初學者友好方法MySQL:一種對數據存儲的初學者友好方法Apr 17, 2025 am 12:21 AM

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

MySQL初學者友好嗎?評估學習曲線MySQL初學者友好嗎?評估學習曲線Apr 17, 2025 am 12:19 AM

MySQL適合初學者,因為:1)易於安裝和配置,2)有豐富的學習資源,3)SQL語法直觀,4)工具支持強大。儘管如此,初學者需克服數據庫設計、查詢優化、安全管理和數據備份等挑戰。

SQL是一種編程語言嗎?澄清術語SQL是一種編程語言嗎?澄清術語Apr 17, 2025 am 12:17 AM

是的,sqlisaprogramminglanguges pecialized fordatamanage.1)它具有焦點,focusingonwhattoachieveratherthanhow.2)sqlisessential forquerying forquerying,插入,更新,更新,和detletingdatainrelationalDatabases.3)

解釋酸的特性(原子,一致性,隔離,耐用性)。解釋酸的特性(原子,一致性,隔離,耐用性)。Apr 16, 2025 am 12:20 AM

ACID屬性包括原子性、一致性、隔離性和持久性,是數據庫設計的基石。 1.原子性確保事務要么完全成功,要么完全失敗。 2.一致性保證數據庫在事務前後保持一致狀態。 3.隔離性確保事務之間互不干擾。 4.持久性確保事務提交後數據永久保存。

MySQL:數據庫管理系統與編程語言MySQL:數據庫管理系統與編程語言Apr 16, 2025 am 12:19 AM

MySQL既是數據庫管理系統(DBMS),也與編程語言緊密相關。 1)作為DBMS,MySQL用於存儲、組織和檢索數據,優化索引可提高查詢性能。 2)通過SQL與編程語言結合,嵌入在如Python中,使用ORM工具如SQLAlchemy可簡化操作。 3)性能優化包括索引、查詢、緩存、分庫分錶和事務管理。

mySQL:使用SQL命令管理數據mySQL:使用SQL命令管理數據Apr 16, 2025 am 12:19 AM

MySQL使用SQL命令管理數據。 1.基本命令包括SELECT、INSERT、UPDATE和DELETE。 2.高級用法涉及JOIN、子查詢和聚合函數。 3.常見錯誤有語法、邏輯和性能問題。 4.優化技巧包括使用索引、避免SELECT*和使用LIMIT。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。