arch mysql日志位置_MySQL 日志文件與相關參數

1 、參數文件及mysql參數

查看mysql 的 my.cnf 配置文件位置命令:>./bin/mysql --help | grep my.cnf

查看mysql 的參數設置命令:?mysql?>??show variables ?--顯示所有參數; // show variables like 'log_error%' 顯示某匹配參數

mysql?>?select @@session.read_buffer_size; 查看當前session的read_buffer_sizemysql?>?select @@global.read_buffer_size; 查看全局的read_buffer_size

mysql?>?set  @@session.read_buffer_size=1024000; 設置當前session的read_buffer_size

mysql?>?set  @@session.read_buffer_size=1024000; 設置當前session的read_buffer_size

2、日志文件

my.cnf 的啟動選項========數據庫日志選項(值為[file_name])========

--log常規日志文件

--log_bin二進制變更日志文件

--log-bin-index二進制變更日志文件索引文件

--log-update變更日志文件

--log-slow-queries慢查詢日志文件

--log-isamISAM/MyISAM日志文件

--log-long-format?設置慢查詢日志和變更日志的格式

========數據表日志選項( 值為[dir_name])========

--bdb-logdir存放BDB日志文件的位置

--innodb-log_arch_dir存放InnoDB日志文件的歸檔位置

--innodb_log_group_home_dir?存放InnoDB日志文件的位置

1)錯誤日志(my.cnf 配置文件中使用 log-error [=file_name] 設置,在SQL中使用mysql> show variables like 'log_error%';查看位置)錯誤日志文件包含了當mysqld啟動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。如果mysqld莫名其妙地死掉并且mysqld_safe需要重新啟動它,mysqld_safe在錯誤日志中寫入一條restarted mysqld消息。如果mysqld注意到需要自動檢查或著修復一個表,則錯誤日志中寫入一條消息。在一些操作系統中,如果mysqld死掉,錯誤日志包含堆棧跟蹤信息。跟蹤信息可以用來確定mysqld死掉的地方(參見“使用堆棧跟蹤”)。

如果在啟動參數文件中沒有給定log-error 的值,mysqld使用錯誤日志名host_name.err 并在數據目錄中寫入日志文件。如果你執行FLUSH LOGS,錯誤日志用-old重新命名后綴并且mysqld創建一個新的空日志文件。(如果未給出--log-error選項,則不會重新命名)。

如果不指定--log-error,或者(在Windows中)如果你使用--console選項,錯誤被寫入標準錯誤輸出stderr。通常標準輸出為你的終端。在Windows中,如果未給出--console選項,錯誤輸出總是寫入.err文件。2)查詢日志(my.cnf 配置文件中使用 log[=file_name] 設置,或者在mysql啟動時使用 -l file_name啟動參數設置,默認值為 host_name.log)

查詢日志是記錄建立的客戶端連接和執行的語句, mysql按照它接收的順序記語句到log文件中,這樣你就可以查看 mysql 內部發生了什么;查詢日志與

更新日志和二進制日志不同, 它們在查詢執行后,但是任何一個鎖釋放之前記錄日志(它還包括所有語句,而二進制文件不包含只查詢語句)

服務器重新啟動和日志刷新不會產生新的一般查詢日志文件(盡管刷新關閉并重新打開一般查詢日志文件)。

在Unix中,你可以通過下面的命令重新命名文件并創建一個新文件:簡單的mv、rm、cp 命令 或者使用 mysqladmin flush-logs。

在Windows中,你只能通過先停止服務器,?把日志文件重命名再啟動服務器來創建新的日志文件。

3)二進制日志(my.cnf配件文件中使用 log-bin [=file_name]設置,默認值為 -bin_hostname)二進制日志以一種更有效的格式,并且是事務安全的方式包含更新日志中可用的所有信息(5.1后的版本中不再使用 更新日志)

二進制日志包含了所有更新了數據或者已經潛在更新了數據(例如,沒有匹配任何行的一個 DELETE或UPDATE)的所有語句。語句以“事件”的形式保存,它描述數據更改。二進制日志還包含關于每個更新數據庫的語句的執行時間信息,但它不包含沒有修改任何數據的語句。

>二進制日志的主要目的是在恢復使能夠最大可能地更新數據庫,因為二進制日志包含備份后進行的所有更新;

>二進制日志還用于在主復制服務器上記錄所有將發送給從服務器的語句

>二進制默認寫入至數據目錄,以-bin.00001mysqld自動在每個日志后面添加一個數據擴展名,當前的日志大小達到 max_binlog_size 時自動創建新的二進制日志,一個事務只能寫入同一個日志文件中。

>mysqld創建一個二進制日志索引文件,包含所有使用的二進制日志文件的文件名,使用戶能知道?哪個不同的二進制日志文件。默認情況下二進制日志索引文件與二進制日志文件的文件名相同, 擴展名為".index"。

>你可以用--log-bin-index[=file_name]選項更改二進制日志索引文件的文件名;當mysqld在運行時,不應手動編輯該文件;如果這樣做將會使mysqld變得混亂。可以用RESET MASTER語句刪除所有二進制日志文件,或用PURGE MASTER LOGS只刪除部分二進制文件。

二進制日志格式有一些已知限制,會影響從備份恢復。參見“復制特性和已知問題”。

>保存程序和觸發器的二進制日志的描述參,“存儲子程序和觸發程序的二進制日志功能”。

可以使用下面的mysqld選項來影響記錄到二進制日志知的內容。又見選項后面的討論。

--binlog-do-db=db_name告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,應將更新記錄到二進制日志中。其它所有沒有明顯指定的數據庫 被忽略。如果使用該選項,你應確保只對當前的數據庫進行更新。

對于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個例外,即通過操作的數據庫來決定是否應記錄語句,而不是用當前的數據庫。

--binlog-ignore-db=db_name

告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不應將更新保存到二進制日志中。如果你使用該選項,你應確保只對當前的數據庫進行更新。

類似于--binlog-do-db,對于CREATE DATABASE、ALTER DATABASE和DROP DATABASE語句,有一個例外,即通過操作的數據庫來決定是否應記錄語句,而不是用當前的數據庫。

要想記錄或忽視多個數據庫,使用多個選項,為每個數據庫指定相應的選項。

服務器根據下面的規則對選項進行評估,以便將更新記錄到二進制日志中或忽視。請注意對于CREATE/ALTER/DROP DATABASE語句有一個例外。在這些情況下,根據以下規則,所創建、修改或刪除的數據庫將代替當前的數據庫。

1. 是否有binlog-do-db或binlog-ignore-db規則?

· 沒有:將語句寫入二進制日志并退出。

· 有:執行下一步。

2. 有一些規則(binlog-do-db或binlog-ignore-db或二者都有)。當前有一個數據庫(USE是否選擇了數據庫?)?

· 沒有:不要寫入語句,并退出。

· 有:執行下一步。

3. 有當前的數據庫。是否有binlog-do-db規則?

· 有:當前的數據庫是否匹配binlog-do-db規則?

o 有:寫入語句并退出。

o 沒有:不要寫入語句,退出。

· No:執行下一步。

4. 有一些binlog-ignore-db規則。當前的數據庫是否匹配binlog-ignore-db規則?

· 有:不要寫入語句,并退出。

· 沒有:寫入查詢并退出。

例如,只用binlog-do-db=sales運行的服務器不將當前數據庫不為sales的語句寫入二進制日志(換句話說,binlog-do-db有時可以表示“忽視其它數據庫”)。

如果你正進行復制,應確保沒有從服務器在使用舊的二進制日志文件,方可刪除它們。一種方法是每天一次執行mysqladmin flush-logs并刪除三天前的所有日志。可以手動刪除,或最好使用PURGE MASTER LOGS(參見“用于控制主服務器的SQL語句”),該語句還會安全地更新二進制日志索引文件(可以采用日期參數)。具有SUPER權限的客戶端可以通過SET SQL_LOG_BIN=0語句禁止將自己的語句記入二進制記錄。參見13.5.3節,“SET語法”。

你可以用mysqlbinlog實用工具檢查二進制日志文件。如果你想要重新處理日志止的語句,這很有用。例如,可以從二進制日志更新MySQL服務器,方法如下:

shell> mysqlbinlog log-file | mysql -h server_name

關于mysqlbinlog實用工具的詳細信息以及如何使用它,參見“mysqlbinlog:用于處理二進制日志文件的實用工具”。

如果你正使用事務,必須使用MySQL二進制日志進行備份,而不能使用舊的更新日志。

查詢結束后、鎖定被釋放前或提交完成后則立即記入二進制日志。這樣可以確保按執行順序記入日志。

對非事務表的更新執行完畢后立即保存到二進制日志中。對于事務表,例如BDB或InnoDB表,所有更改表的更新(UPDATE、DELETE或INSERT) 被緩存起來,直到服務器接收到COMMIT語句。在該點,執行完COMMIT之前,mysqld將整個事務寫入二進制日志。當處理事務的線程啟動時,它為緩沖查詢分配binlog_cache_size大小的內存。如果語句大于該值,線程則打開臨時文件來保存事務。線程結束后臨時文件被刪除。

Binlog_cache_use狀態變量顯示了使用該緩沖區(也可能是臨時文件)保存語句的事務的數量。Binlog_cache_disk_use狀態變量顯示了這些事務中實際上有多少必須使用臨時文件。這兩個變量可以用于將binlog_cache_size調節到足夠大的值,以避免使用臨時文件。

max_binlog_cache_size(默認4GB)可以用來限制用來緩存多語句事務的緩沖區總大小。如果某個事務大于該值,將會失敗并 回滾。

如果你正使用更新日志或二進制日志,當使用CREATE ... SELECT or INSERT ... SELECT時,并行插入被轉換為普通插入。這樣通過在備份時使用日志可以確保重新創建表的備份。

請注意MySQL 5.1值的二進制日志格式與以前版本的MySQL不同,因為復制改進了。參見“不同MySQL版本之間的復制兼容性”。

默認情況下,并不是每次寫入時都將二進制日志與硬盤同步。因此如果操作系統或機器(不僅僅是MySQL服務器)崩潰,有可能二進制日志中最后的語句丟失了。要想防止這種情況,你可以使用sync_binlog全局變量(1是最安全的值,但也是最慢的),使二進制日志在每N次二進制日志寫入后與硬盤同步。參見5.3.3節,“服務器系統變量”。即使sync_binlog設置為1,出現崩潰時,也有可能表內容和二進制日志內容之間存在不一致性。例如,如果使用InnoDB表,MySQL服務器處理COMMIT語句,它將整個事務寫入二進制日志并將事務提交到InnoDB中。如果在兩次操作之間出現崩潰,重啟時,事務被InnoDB回滾,但仍然存在二進制日志中。可以用--innodb-safe-binlog選項解決該問題,可以增加InnoDB表內容和二進制日志之間的一致性。(注釋:在MySQL 5.1中不需要--innodb-safe-binlog;由于引入了XA事務支持,該選項作廢了)。

該選項可以提供更大程度的安全,還應對MySQL服務器進行配置,使每個事務的二進制日志(sync_binlog =1)和(默認情況為真)InnoDB日志與硬盤同步。該選項的效果是崩潰后重啟時,在滾回事務后,MySQL服務器從二進制日志剪切 回滾的InnoDB事務。這樣可以確保二進制日志反饋InnoDB表的確切數據等,并使從服務器保持與主服務器保持同步(不接收 回滾的語句)。

請注意即使MySQL服務器更新其它存儲引擎而不是InnoDB,也可以使用--innodb-safe-binlog。在InnoDB崩潰恢復時,只從二進制日志中刪除影響InnoDB表的語句/事務。如果崩潰恢復時MySQL服務器發現二進制日志變短了(即至少缺少一個成功提交的InnoDB事務),如果sync_binlog =1并且硬盤/文件系統的確能根據需要進行同步(有些不需要)則不會發生,則輸出錯誤消息 ("二進制日志比期望的要小")。在這種情況下,二進制日志不準確,復制應從主服務器的數據快照開始。

寫入二進制日志文件和二進制日志索引文件的方法與寫入MyISAM表相同。參見A.4.3節,“MySQL處理磁盤滿的方式”。

4) 慢速查詢日志?用--log-slow-queries[=file_name]選項啟動時,mysqld寫一個包含所有執行時間超過long_query_time秒的SQL語句的日志文件。獲得初使表鎖定的時間不算作執行時間。如果沒有給出file_name值, 默認未主機名,后綴為-slow.log。如果給出了文件名,但不是絕對路徑名,文件則寫入數據目錄。

語句執行完并且所有鎖釋放后記入慢查詢日志。記錄順序可以與執行順序不相同。

>慢查詢日志可以用來找到執行時間長的查詢,可以用于優化。但是,檢查又長又慢的查詢日志會很困難。要想容易些,你可以使用mysqldumpslow命令獲得日志中顯示的查詢摘要來處理慢查詢日志。>在MySQL 5.1的慢查詢日志中,不使用索引的慢查詢同使用索引的查詢一樣記錄。要想防止不使用索引的慢查詢記入慢查詢日志,使用--log-short-format選項。參見,“mysqld命令行選項”。

>在MySQL 5.1中,通過--log-slow-admin-statements服務器選項,你可以請求將慢管理語句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE寫入慢查詢日志。

>用查詢緩存處理的查詢不加到慢查詢日志中,因為表有零行或一行而不能從索引中受益的查詢也不寫入慢查詢日志。

3、 日志文件維護MySQL服務器可以創建各種不同的日志文件,從而可以很容易地看見所進行的操作。參見“MySQL日志文件”。但是,你必須定期清理這些文件,確保日志不會占用太多的硬盤空間。

當啟用日志使用MySQL時,你可能想要不時地備份并刪除舊的日志文件,并告訴MySQL開始記入新文件。參見“數據庫備份”。

在 Linux (Redhat)的安裝上,你可為此使用mysql-log-rotate腳本。如果你從RPM分發安裝MySQL,腳本應該自動被安裝了。

在其它系統上,你必須自己安裝短腳本,你可從cron等入手處理日志文件。

你可以通過mysqladmin flush-logs或SQL語句FLUSH LOGS來強制MySQL開始使用新的日志文件。

日志清空操作做下列事情:

如果使用標準日志(--log)或慢查詢日志(--log-slow-queries),關閉并重新打開日志文件。(默認為mysql.log和`hostname`-slow.log)。

如果使用更新日志(--log-update)或二進制日志(--log-bin),關閉日志并且打開有更高序列號的新日志文件。

如果你只使用更新日志,你只需要重新命名日志文件,然后在備份前清空日志。例如,你可以這樣做:

shell> cd mysql-data-directory

shell> mv mysql.log mysql.old

shell> mysqladmin flush-logs

然后做備份并刪除“mysql.old”。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457293.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457293.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457293.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MOSS點滴(2):自定義Application Page

在MOSS中后臺管理的頁面都是Application Page,比如網站設置的頁面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我們要修改只能手動的使用其他工具來修改,我們也可以添加Application Page,必須…

wpf使用webbrowser時提示當前頁面腳本發生錯誤_win7系統internet腳本錯誤的應對辦法...

最近有win7系統用戶反饋,上網時遇到ie瀏覽器總會提示internet腳本錯誤的問題,不知如何解決,為此非常苦惱,那么win7系統提示internet腳本錯誤怎么辦呢?就此問題,下面小編教你win7系統internet腳本錯誤的應對辦法。有不…

JDK的目錄結構及結構圖

-bin目錄: JDK開發工具的可執行文件 -lib目錄: 開發工具使用的歸檔包文件 -jre: Java 運行時環境的根目錄,包含Java虛擬機,運行時的類包和Java應用啟動器, 但不包含開發環境中的開發工具 -demo: 含有源代碼的程序示例 -include: 包含…

java9-1.類,抽象類,接口的綜合小練習

1 /*2 教練和運動員案例(學生分析然后講解)3 乒乓球運動員和籃球運動員。4 乒乓球教練和籃球教練。5 為了出國交流,跟乒乓球相關的人員都需要學習英語。6 請用所學知識:7 分析,這個案例中有哪些抽象類,哪些接…

java發送c語言結構體_C語言中結構體直接賦值?

在C語言中結構體變量之間可以進行賦值操作嗎?簡單結構體的賦值先說結論:一般來說,C語言中的結構體變量可以用另一個變量對其進行賦值或初始化。簡單結構體(不包含指針成員)直接賦值沒有問題。我們先下面一段代碼:#include #includ…

Cacti 使用安裝詳解-企業級實例

Cacti是一套基于PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具。Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還…

MySQL 插入數據時,中文亂碼???問題的解決

在終端,mysql -u root -p 登錄; show variables like character%; 來查看當前數據庫的相關編碼集。 client為客戶端使用的字符集。connection為連接數據庫的字符集設置類型,如果程序沒有指明連接數據庫使用的字符集類型則按照服務器端默認的字…

mysql時間間隔interval_MySQL DATEDIFF函數獲取兩個日期的時間間隔的方法

描述返回兩個日期之間的時間間隔。語法DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] )DateDiff 函數的語法有以下參數:參數描述interval必選。字符串表達式,表示用于計算 date1 和 date2 之間的時間間隔。有關數值&#xff…

linux教程:配置Tomcat開機啟動

我們在linux下安裝好tomcat之后;經常是需要配置到開機啟動的; 這樣的話就不需要我們每次重啟linux服務器之后自己在登陸運行startup.sh文件啟動tomcat了 本次的演示環境是在centos7中完成的;也在centos6.5中測試過;理論上所有版本…

操作系統內存分配算法_操作系統基礎45-伙伴系統和slab內存分配

當在用戶模式下運行進程請求額外內存時,從內核維護的空閑頁幀列表上分配頁面。這個列表通常使用頁面置換算法來填充,如前所述,它很可能包含散布在物理內存中的空閑頁面。也要記住,如果用戶進程請求單個字節內存,那么就…

Sublime Text 3新建工程

1. 創建工程 Project > Add Folder to Project 這時在sidebar中將出現剛剛添加的文件目錄,如果還需要添加其他目錄,則重復這一操作即可。 2. 保存工程 Project > Save Project As 點擊保存后Sublime Text將自動生成兩個文件: 如圖&…

鐘國晨 160809323

助教老師好,我是計科三班鐘國晨,我對我們專業并不是很了解,至少從目前來看是這樣,不過雖然感覺我們專業內容比較復雜,我還是對我們所學的知識挺感興趣的,我性格比較開朗,希望以后能和老師您多多…

445端口 mysql_關于如何關閉window端口445的詳細介紹

首先,來查看下系統當前都開放了什么端口,怎樣查看呢?調出cmd命令行程序,輸入命令”netstat -na“,可以看到。接著,可以發現當前系統開放了135、445以及5357端口,而且從狀態看都處于監聽狀態”Li…

maven GroupId 和ArtifactId的含義

GroupID是項目組織唯一的標識符,實際對應Java的包的結構,是main目錄里java的目錄結構。 ArtifactID就是項目的唯一的標識符,實際對應項目的名稱,就是項目根目錄的名稱。

輸入圓的半徑,計算并輸出圓的周長和面積

轉載于:https://www.cnblogs.com/nicebaby/p/5866320.html

python解析xml數據_數據開發_Python解析XML文件

解析XML文件XML是可擴展標記語言,主要用于傳輸和存儲數據解析方式使用lxml解析主要注意: text tag attrib 使用方式 有 get() 以及迭代的情況數據示例a31代碼示例#!/usr/bin/env python# -*-coding:utf-8-*-# file parse_xml_exp.py# date 2020-10-**fro…

Mac下運行git報錯xcrun: error: invalid active developer path ..

錯誤:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 如圖: 解決方法: 終端輸入: xcode-select --install 之后點擊…

CodeForces 15B Laser

題目鏈接:http://codeforces.com/problemset/problem/15/B題意:給出n*m的一塊巧克力,再給出兩個點,兩點只能同時移動,兩點所占位置巧克力會融化,問所有能走位置走遍之后還剩下幾塊巧克力。思路:…

datetime-時間日期模塊

import datetime例1:把nginx的日志格式轉化為易懂的格式time 10/Aug/2016:03:20:09 0800a datetime.datetime.strptime(time,%d/%b/%Y:%H:%M:%S %z)a.strftime(%Y%m%d%H%m)轉載于:https://blog.51cto.com/liuzhengwei521/1892274

tensorflow獨熱編碼方法_吳恩達課后作業學習2-week3-tensorflow learning-1-基本概念

參考:https://blog.csdn.net/u013733326/article/details/79971488希望大家直接到上面的網址去查看代碼,下面是本人的筆記到目前為止,我們一直在使用numpy來自己編寫神經網絡。現在我們將一步步的使用深度學習的框架來很容易的構建屬于自己的…