【Mysql5.7數據目錄和配置文件目錄】

Win7下html

C:\ProgramData\MySQL\MySQL Server 5.7\mysql

如何查看mysql運行、訪問記錄等日誌 sql

1.首先確認你日誌是否啓用了
mysql>show variables like 'log_bin';
2.若是啓用了,即ON
那日誌文件就在mysql的安裝目錄的data目錄下
3.怎樣知道當前的日誌
mysql> show master status;                                                                                                                                               
4.看二進制日誌文件用mysqlbinlog
shell>mysqlbinlog mail-bin.000001
或者shell>mysqlbinlog mail-bin.000001 | tail
Windows 下用相似的
 
 

MySQL配置文件mysql.ini參數詳解shell

http://www.cnblogs.com/feichexia/archive/2012/11/27/mysqlconf.html數據庫

 

   my.ini(Linux系統下是my.cnf),當mysql服務器啓動時它會讀取這個文件,設置相關的運行環境參數。windows

   my.ini分爲兩塊:Client Section和Server Section。
   Client Section用來配置MySQL客戶端參數。
   要查看配置參數能夠用下面的命令:緩存

show variables like '%innodb%'; # 查看innodb相關配置參數安全

show status like '%innodb%'; # 查看innodb相關的運行時參數(好比當前正在打開的表的數量,當前已經打開的表的數量)服務器

show global status like 'open%tables'; # 查看全局的運行時參數,加上global是對當前mysql服務器中運行的全部數據庫實例進行統計。不加global則只對當前數據庫實例進行統計。
 session

一、Client Section
    [client]
    port = 3306 # 設置mysql客戶端鏈接服務端時默認使用的端口
    [mysql]
    default-character-set=utf8 # 設置mysql客戶端默認字符集

 

二、Server Section


[mysqld]
port=3306 # mysql服務端默認監聽(listen on)的TCP/IP端口

basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基準路徑,其餘路徑都相對於這個路徑

datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql數據庫文件所在目錄

character-set-server=latin1 # 服務端使用的字符集默認爲8比特編碼的latin1字符集

default-storage-engine=INNODB # 建立新表時將使用的默認存儲引擎

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" # SQL模式爲strict模式

max_connections=100 # mysql服務器支持的最大併發鏈接數(用戶數)。但總會預留其中的一個鏈接給管理員使用超級權限登陸,即便鏈接數目達到最大限制。若是設置得太小而用戶比較多,會常常出現「Too many connections」錯誤。

query_cache_size=0 # 查詢緩存大小,用於緩存SELECT查詢結果。若是有許多返回相同查詢結果的SELECT查詢,而且不多改變表,能夠設置query_cache_size大於0,能夠極大改善查詢效率。而若是表數據頻繁變化,就不要使用這個,會拔苗助長

table_cache=256 # 這個參數在5.1.3以後的版本中叫作table_open_cache,用於設置table高速緩存的數量。因爲每一個客戶端鏈接都會至少訪問一個表,所以此參數的值與 max_connections有關。當某一鏈接訪問一個表時,MySQL會檢查當前已緩存表的數量。若是該表已經在緩存中打開,則會直接訪問緩存中的表已加快查詢速度;若是該表未被緩存,則會將當前的表添加進緩存並進行查詢。在執行緩存操做以前,table_cache用於限制緩存表的最大數目:若是當前已經緩存的表未達到table_cache,則會將新表添加進來;若已經達到此值,MySQL將根據緩存表的最後查詢時間、查詢率等規則釋放以前的緩存。

tmp_table_size=34M # 內存中的每一個臨時表容許的最大大小。若是臨時表大小超過該值,臨時表將自動轉爲基於磁盤的表(Disk Based Table)。

thread_cache_size=8 # 緩存的最大線程數。當客戶端鏈接斷開時,若是客戶端總鏈接數小於該值,則處理客戶端任務的線程放回緩存。在高併發狀況下,若是該值設置得過小,就會有不少線程頻繁建立,線程建立的開銷會變大,查詢效率也會降低。通常來講若是在應用端有良好的多線程處理,這個參數對性能不會有太大的提升。


# MyISAM相關參數
myisam_max_sort_file_size=100G # mysql重建索引時容許使用的臨時文件最大大小

myisam_sort_buffer_size=68M

key_buffer_size=54M # Key Buffer大小,用於緩存MyISAM表的索引塊。決定數據庫索引處理的速度(尤爲是索引讀)

read_buffer_size=64K # 用於對MyISAM表全表掃描時使用的緩衝區大小。針對每一個線程進行分配(前提是進行了全表掃描)。進行排序查詢時,MySql會首先掃描一遍該緩衝,以免磁盤搜索,提升查詢速度,若是須要排序大量數據,可適當調高該值。但MySql會爲每一個客戶鏈接發放該緩衝空間,因此應儘可能適當設置該值,以免內存開銷過大。

read_rnd_buffer_size=256K

sort_buffer_size=256K # connection級參數(爲每一個線程配置),500個線程將消耗500*256K的sort_buffer_size。


# InnoDB相關參數
innodb_additional_mem_pool_size=3M # InnoDB用於存儲元數據信息的內存池大小,通常不需修改

innodb_flush_log_at_trx_commit =1 # 事務相關參數,若是值爲1,則InnoDB在每次commit都會將事務日誌寫入磁盤(磁盤IO消耗較大),這樣保證了徹底的ACID特性。而若是設置爲0,則表示事務日誌寫入內存log和內存log寫入磁盤的頻率都爲1次/秒。若是設爲2則表示事務日誌在每次commit都寫入內存log,但內存log寫入磁盤的頻率爲1次/秒。

innodb_log_buffer_size=2M # InnoDB日誌數據緩衝大小,若是緩衝滿了,就會將緩衝中的日誌數據寫入磁盤(flush)。因爲通常至少都1秒鐘會寫一次磁盤,因此不必設置過大,即便是長事務。

innodb_buffer_pool_size=105M # InnoDB使用緩衝池來緩存索引和行數據。該值設置的越大,則磁盤IO越少。通常將該值設爲物理內存的80%。

innodb_log_file_size=53M # 每個InnoDB事務日誌的大小。通常設爲innodb_buffer_pool_size的25%到100%


innodb_thread_concurrency=9 # InnoDB內核最大併發線程數

 

 

 
 
Mysql my.ini 配置文件詳解
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少許的鏈接, 隊列負載大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子針對4G內存
# 主要使用INNODB
#處理複雜隊列而且鏈接數量較少的mysql服務器
#
# 將此文件複製到/etc/my.cnf 做爲全局設置,
# mysql-data-dir/my.cnf 做爲服務器指定設置
# (@localstatedir@ for this installation) 或者放入
# ~/.my.cnf 做爲用戶設置.
#
# 在此配置文件中, 你可使用全部程序支持的長選項.
# 若是想獲悉程序支持的全部選項
# 請在程序後加上"--help"參數運行程序.
#
# 關於獨立選項更多的細節信息能夠在手冊內找到
#
#
# 如下選項會被MySQL客戶端應用讀取.
# 注意只有MySQL附帶的客戶端應用程序保證能夠讀取這段內容.
# 若是你想你本身的MySQL應用程序獲取這些值
# 須要在MySQL客戶端庫初始化的時候指定這些選項
#
[client]
#password = [your_password]
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
# *** 應用定製選項 ***
#
# MySQL 服務端
#
[mysqld]
# 通常配置選項
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@
# back_log 是操做系統在監聽隊列中所能保持的鏈接數,
# 隊列保存了在MySQL鏈接管理器線程處理以前的鏈接.
# 若是你有很是高的鏈接率而且出現"connection refused" 報錯,
# 你就應該增長此處的值.
# 檢查你的操做系統文檔來獲取這個變量的最大值.
# 若是將back_log設定到比你操做系統限制更高的值,將會沒有效果
back_log = 50
# 不在TCP/IP端口上進行監聽.
# 若是全部的進程都是在同一臺服務器鏈接到本地的mysqld,
# 這樣設置將是加強安全的方法
# 全部mysqld的鏈接都是經過Unix sockets 或者命名管道進行的.
# 注意在windows下若是沒有打開命名管道選項而只是用此項
# (經過 "enable-named-pipe" 選項) 將會致使mysql服務沒有任何做用!
#skip-networking
# MySQL 服務所容許的同時會話數的上限
# 其中一個鏈接將被SUPER權限保留做爲管理員登陸.
# 即使已經達到了鏈接數的上限.
max_connections = 100
# 每一個客戶端鏈接最大的錯誤容許數量,若是達到了此限制.
# 這個客戶端將會被MySQL服務阻止直到執行了"FLUSH HOSTS" 或者服務重啓
# 非法的密碼以及其餘在連接時的錯誤會增長此值.
# 查看 "Aborted_connects" 狀態來獲取全局計數器.
max_connect_errors = 10
# 全部線程所打開表的數量.
# 增長此值就增長了mysqld所須要的文件描述符的數量
# 這樣你須要確認在[mysqld_safe]中 "open-files-limit" 變量設置打開文件數量容許至少4096
table_cache = 2048
# 容許外部文件級別的鎖. 打開文件鎖會對性能形成負面影響
# 因此只有在你在一樣的文件上運行多個數據庫實例時才使用此選項(注意仍會有其餘約束!)
# 或者你在文件層面上使用了其餘一些軟件依賴來鎖定MyISAM表
#external-locking
# 服務所能處理的請求包的最大大小以及服務所能處理的最大的請求大小(當與大的BLOB字段一塊兒工做時至關必要)
# 每一個鏈接獨立的大小.大小動態增長
max_allowed_packet = 16M
# 在一個事務中binlog爲了記錄SQL狀態所持有的cache大小
# 若是你常用大的,多聲明的事務,你能夠增長此值來獲取更大的性能.
# 全部從事務來的狀態都將被緩衝在binlog緩衝中而後在提交後一次性寫入到binlog中
# 若是事務比此值大, 會使用磁盤上的臨時文件來替代.
# 此緩衝在每一個鏈接的事務第一次更新狀態時被建立
binlog_cache_size = 1M
# 獨立的內存表所容許的最大容量.
# 此選項爲了防止意外建立一個超大的內存表致使永盡全部的內存資源.
max_heap_table_size = 64M
# 排序緩衝被用來處理相似ORDER BY以及GROUP BY隊列所引發的排序
# 若是排序後的數據沒法放入排序緩衝,
# 一個用來替代的基於磁盤的合併分類會被使用
# 查看 "Sort_merge_passes" 狀態變量.
# 在排序發生時由每一個線程分配
sort_buffer_size = 8M
# 此緩衝被使用來優化全聯合(full JOINs 不帶索引的聯合).
# 相似的聯合在極大多數狀況下有很是糟糕的性能表現,
# 可是將此值設大可以減輕性能影響.
# 經過 "Select_full_join" 狀態變量查看全聯合的數量
# 當全聯合發生時,在每一個線程中分配
join_buffer_size = 8M
# 咱們在cache中保留多少線程用於重用
# 當一個客戶端斷開鏈接後,若是cache中的線程還少於thread_cache_size,
# 則客戶端線程被放入cache中.
# 這能夠在你須要大量新鏈接的時候極大的減小線程建立的開銷
# (通常來講若是你有好的線程模型的話,這不會有明顯的性能提高.)
thread_cache_size = 8
# 此容許應用程序給予線程系統一個提示在同一時間給予渴望被運行的線程的數量.
# 此值只對於支持 thread_concurrency() 函數的系統有意義( 例如Sun Solaris).
# 你可能夠嘗試使用 [CPU數量]*(2..4) 來做爲thread_concurrency的值
thread_concurrency = 8
# 查詢緩衝常被用來緩衝 SELECT 的結果而且在下一次一樣查詢的時候再也不執行直接返回結果.
# 打開查詢緩衝能夠極大的提升服務器速度, 若是你有大量的相同的查詢而且不多修改表.
# 查看 "Qcache_lowmem_prunes" 狀態變量來檢查是否當前值對於你的負載來講是否足夠高.
# 注意: 在你表常常變化的狀況下或者若是你的查詢原文每次都不一樣,
# 查詢緩衝也許引發性能降低而不是性能提高.
query_cache_size = 64M
# 只有小於此設定值的結果纔會被緩衝
# 此設置用來保護查詢緩衝,防止一個極大的結果集將其餘全部的查詢結果都覆蓋.
query_cache_limit = 2M
# 被全文檢索索引的最小的字長.
# 你也許但願減小它,若是你須要搜索更短字的時候.
# 注意在你修改此值以後,
# 你須要重建你的 FULLTEXT 索引
ft_min_word_len = 4
# 若是你的系統支持 memlock() 函數,你也許但願打開此選項用以讓運行中的mysql在在內存高度緊張的時候,數據在內存中保持鎖定而且防止可能被swapping out
# 此選項對於性能有益
#memlock
# 當建立新表時做爲默認使用的表類型,
# 若是在建立表示沒有特別執行表類型,將會使用此值
default_table_type = MYISAM
# 線程使用的堆大小. 此容量的內存在每次鏈接時被預留.
# MySQL 自己常不會須要超過64K的內存
# 若是你使用你本身的須要大量堆的UDF函數
# 或者你的操做系統對於某些操做須要更多的堆,
# 你也許須要將其設置的更高一點.
thread_stack = 192K
# 設定默認的事務隔離級別.可用的級別以下:
# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
transaction_isolation = REPEATABLE-READ
# 內部(內存中)臨時表的最大大小
# 若是一個表增加到比此值更大,將會自動轉換爲基於磁盤的表.
# 此限制是針對單個表的,而不是總和.
tmp_table_size = 64M
# 打開二進制日誌功能.
# 在複製(replication)配置中,做爲MASTER主服務器必須打開此項
# 若是你須要從你最後的備份中作基於時間點的恢復,你也一樣須要二進制日誌.
log-bin=mysql-bin
# 若是你在使用鏈式從服務器結構的複製模式 (A->B->C),
# 你須要在服務器B上打開此項.
# 此選項打開在從線程上重作過的更新的日誌,
# 並將其寫入從服務器的二進制日誌.
#log_slave_updates
# 打開全查詢日誌. 全部的由服務器接收到的查詢 (甚至對於一個錯誤語法的查詢)
# 都會被記錄下來. 這對於調試很是有用, 在生產環境中經常關閉此項.
#log
# 將警告打印輸出到錯誤log文件. 若是你對於MySQL有任何問題
# 你應該打開警告log而且仔細審查錯誤日誌,查出可能的緣由.
#log_warnings
# 記錄慢速查詢. 慢速查詢是指消耗了比 "long_query_time" 定義的更多時間的查詢.
# 若是 log_long_format 被打開,那些沒有使用索引的查詢也會被記錄.
# 若是你常常增長新查詢到已有的系統內的話. 通常來講這是一個好主意,
log_slow_queries
# 全部的使用了比這個時間(以秒爲單位)更多的查詢會被認爲是慢速查詢.
# 不要在這裏使用"1", 不然會致使全部的查詢,甚至很是快的查詢頁被記錄下來(因爲MySQL 目前時間的精確度只能達到秒的級別).
long_query_time = 2
# 在慢速日誌中記錄更多的信息.
# 通常此項最好打開.
# 打開此項會記錄使得那些沒有使用索引的查詢也被做爲到慢速查詢附加到慢速日誌裏
log_long_format
# 此目錄被MySQL用來保存臨時文件.例如,
# 它被用來處理基於磁盤的大型排序,和內部排序同樣.
# 以及簡單的臨時表.
# 若是你不建立很是大的臨時文件,將其放置到 swapfs/tmpfs 文件系統上也許比較好
# 另外一種選擇是你也能夠將其放置在獨立的磁盤上.
# 你可使用";"來放置多個路徑
# 他們會按照roud-robin方法被輪詢使用.
#tmpdir = /tmp

# *** 複製有關的設置

# 惟一的服務辨識號,數值位於 1 到 2^32-1之間.
# 此值在master和slave上都須要設置.
# 若是 "master-host" 沒有被設置,則默認爲1, 可是若是忽略此選項,MySQL不會做爲master生效.
server-id = 1
# 複製的Slave (去掉master段的註釋來使其生效)
#
# 爲了配置此主機做爲複製的slave服務器,你能夠選擇兩種方法:
#
# 1) 使用 CHANGE MASTER TO 命令 (在咱們的手冊中有完整描述) -
# 語法以下:
#
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
# 你須要替換掉 <host>, <user>, <password> 等被尖括號包圍的字段以及使用master的端口號替換<port> (默認3306).
#
# 例子:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# 或者
#
# 2) 設置如下的變量. 不論如何, 在你選擇這種方法的狀況下, 而後第一次啓動複製(甚至不成功的狀況下,
# 例如若是你輸入錯密碼在master-password字段而且slave沒法鏈接),
# slave會建立一個 master.info 文件,而且以後任何對於包含在此文件內的參數的變化都會被忽略
# 而且由 master.info 文件內的內容覆蓋, 除非你關閉slave服務, 刪除 master.info 而且重啓slave 服務.
# 因爲這個緣由,你也許不想碰一下的配置(註釋掉的) 而且使用 CHANGE MASTER TO (查看上面) 來代替
#
# 所須要的惟一id號位於 2 和 2^32 - 1之間
# (而且和master不一樣)
# 若是master-host被設置了.則默認值是2
# 可是若是省略,則不會生效
#server-id = 2
#
# 複製結構中的master - 必須
#master-host = <hostname>
#
# 當鏈接到master上時slave所用來認證的用戶名 - 必須
#master-user = <username>
#
# 當鏈接到master上時slave所用來認證的密碼 - 必須
#master-password = <password>
#
# master監聽的端口.
# 可選 - 默認是3306
#master-port = <port>
# 使得slave只讀.只有用戶擁有SUPER權限和在上面的slave線程可以修改數據.
# 你可使用此項去保證沒有應用程序會意外的修改slave而不是master上的數據
#read_only

#*** MyISAM 相關選項

# 關鍵詞緩衝的大小, 通常用來緩衝MyISAM表的索引塊.
# 不要將其設置大於你可用內存的30%,
# 由於一部份內存一樣被OS用來緩衝行數據
# 甚至在你並不使用MyISAM 表的狀況下, 你也須要仍舊設置起 8-64M 內存因爲它一樣會被內部臨時磁盤表使用.
key_buffer_size = 32M
# 用來作MyISAM表全表掃描的緩衝大小.
# 當全表掃描須要時,在對應線程中分配.
read_buffer_size = 2M
# 當在排序以後,從一個已經排序好的序列中讀取行時,行數據將從這個緩衝中讀取來防止磁盤尋道.
# 若是你增高此值,能夠提升不少ORDER BY的性能.
# 當須要時由每一個線程分配
read_rnd_buffer_size = 16M
# MyISAM 使用特殊的相似樹的cache來使得突發插入
# (這些插入是,INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., 以及 LOAD DATA
# INFILE) 更快. 此變量限制每一個進程中緩衝樹的字節數.
# 設置爲 0 會關閉此優化.
# 爲了最優化不要將此值設置大於 "key_buffer_size".
# 當突發插入被檢測到時此緩衝將被分配.
bulk_insert_buffer_size = 64M
# 此緩衝當MySQL須要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一個空表中引發重建索引時被分配.
# 這在每一個線程中被分配.因此在設置大值時須要當心.
myisam_sort_buffer_size = 128M
# MySQL重建索引時所容許的最大臨時文件的大小 (當 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
# 若是文件大小比此值更大,索引會經過鍵值緩衝建立(更慢)
myisam_max_sort_file_size = 10G
# 若是被用來更快的索引建立索引所使用臨時文件大於制定的值,那就使用鍵值緩衝方法.
# 這主要用來強制在大表中長字串鍵去使用慢速的鍵值緩衝方法來建立索引.
myisam_max_extra_sort_file_size = 10G
# 若是一個表擁有超過一個索引, MyISAM 能夠經過並行排序使用超過一個線程去修復他們.
# 這對於擁有多個CPU以及大量內存狀況的用戶,是一個很好的選擇.
myisam_repair_threads = 1
# 自動檢查和修復沒有適當關閉的 MyISAM 表.
myisam_recover

# 默認關閉 Federated
skip-federated
# *** BDB 相關選項 ***
# 若是你運行的MySQL服務有BDB支持可是你不許備使用的時候使用此選項. 這會節省內存而且可能加速一些事.
skip-bdb

# *** INNODB 相關選項 ***
# 若是你的MySQL服務包含InnoDB支持可是並不打算使用的話,
# 使用此選項會節省內存以及磁盤空間,而且加速某些部分
#skip-innodb
# 附加的內存池被InnoDB用來保存 metadata 信息
# 若是InnoDB爲此目的須要更多的內存,它會開始從OS這裏申請內存.
# 因爲這個操做在大多數現代操做系統上已經足夠快, 你通常不須要修改此值.
# SHOW INNODB STATUS 命令會顯示當先使用的數量.
innodb_additional_mem_pool_size = 16M
# InnoDB使用一個緩衝池來保存索引和原始數據, 不像 MyISAM.
# 這裏你設置越大,你在存取表裏面數據時所須要的磁盤I/O越少.
# 在一個獨立使用的數據庫服務器上,你能夠設置這個變量到服務器物理內存大小的80%
# 不要設置過大,不然,因爲物理內存的競爭可能致使操做系統的換頁顛簸.
# 注意在32位系統上你每一個進程可能被限制在 2-3.5G 用戶層面內存限制,
# 因此不要設置的過高.
innodb_buffer_pool_size = 2G
# InnoDB 將數據保存在一個或者多個數據文件中成爲表空間.
# 若是你只有單個邏輯驅動保存你的數據,一個單個的自增文件就足夠好了.
# 其餘狀況下.每一個設備一個文件通常都是個好的選擇.
# 你也能夠配置InnoDB來使用裸盤分區 - 請參考手冊來獲取更多相關內容
innodb_data_file_path = ibdata1:10M:autoextend
# 設置此選項若是你但願InnoDB表空間文件被保存在其餘分區.
# 默認保存在MySQL的datadir中.
#innodb_data_home_dir = <directory>
# 用來同步IO操做的IO線程的數量. This value is
# 此值在Unix下被硬編碼爲4,可是在Windows磁盤I/O可能在一個大數值下表現的更好.
innodb_file_io_threads = 4
# 若是你發現InnoDB表空間損壞, 設置此值爲一個非零值可能幫助你導出你的表.
# 從1開始而且增長此值知道你可以成功的導出表.
#innodb_force_recovery=1
# 在InnoDb核心內的容許線程數量.
# 最優值依賴於應用程序,硬件以及操做系統的調度方式.
# 太高的值可能致使線程的互斥顛簸.
innodb_thread_concurrency = 16
# 若是設置爲1 ,InnoDB會在每次提交後刷新(fsync)事務日誌到磁盤上,
# 這提供了完整的ACID行爲.
# 若是你願意對事務安全折衷, 而且你正在運行一個小的食物, 你能夠設置此值到0或者2來減小由事務日誌引發的磁盤I/O
# 0表明日誌只大約每秒寫入日誌文件而且日誌文件刷新到磁盤.
# 2表明日誌寫入日誌文件在每次提交後,可是日誌文件只有大約每秒纔會刷新到磁盤上.
innodb_flush_log_at_trx_commit = 1
# 加速InnoDB的關閉. 這會阻止InnoDB在關閉時作全清除以及插入緩衝合併.
# 這可能極大增長關機時間, 可是取而代之的是InnoDB可能在下次啓動時作這些操做.
#innodb_fast_shutdown
# 用來緩衝日誌數據的緩衝區的大小.
# 當此值快滿時, InnoDB將必須刷新數據到磁盤上.
# 因爲基本上每秒都會刷新一次,因此沒有必要將此值設置的太大(甚至對於長事務而言)
innodb_log_buffer_size = 8M
# 在日誌組中每一個日誌文件的大小.
# 你應該設置日誌文件總合大小到你緩衝池大小的25%~100%
# 來避免在日誌文件覆寫上沒必要要的緩衝池刷新行爲.
# 不論如何, 請注意一個大的日誌文件大小會增長恢復進程所須要的時間.
innodb_log_file_size = 256M
# 在日誌組中的文件總數.
# 一般來講2~3是比較好的.
innodb_log_files_in_group = 3
# InnoDB的日誌文件所在位置. 默認是MySQL的datadir.
# 你能夠將其指定到一個獨立的硬盤上或者一個RAID1捲上來提升其性能
#innodb_log_group_home_dir
# 在InnoDB緩衝池中最大容許的髒頁面的比例.
# 若是達到限額, InnoDB會開始刷新他們防止他們妨礙到乾淨數據頁面.
# 這是一個軟限制,不被保證絕對執行.
innodb_max_dirty_pages_pct = 90
# InnoDB用來刷新日誌的方法.
# 表空間老是使用雙重寫入刷新方法
# 默認值是 "fdatasync", 另外一個是 "O_DSYNC".
#innodb_flush_method=O_DSYNC
# 在被回滾前,一個InnoDB的事務應該等待一個鎖被批准多久.
# InnoDB在其擁有的鎖表中自動檢測事務死鎖而且回滾事務.
# 若是你使用 LOCK TABLES 指令, 或者在一樣事務中使用除了InnoDB之外的其餘事務安全的存儲引擎
# 那麼一個死鎖可能發生而InnoDB沒法注意到.
# 這種狀況下這個timeout值對於解決這種問題就很是有幫助.
innodb_lock_wait_timeout = 120

[mysqldump]
# 不要在將內存中的整個結果寫入磁盤以前緩存. 在導出很是巨大的表時須要此項
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# 僅僅容許使用鍵值的 UPDATEs 和 DELETEs .
#safe-updates
[isamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[myisamchk]
key_buffer = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
# 增長每一個進程的可打開文件數量.
# 警告: 確認你已經將全系統限制設定的足夠高!
# 打開大量表須要將此值設高
open-files-limit = 8192 
 

日誌文件類型概述:   
1.
錯誤日誌   記錄啓動、運行或中止mysqld時出現的問題。
My.ini配置信息:
#Enter a name for the error log file.   Otherwise a default name will be used.
#log-error=d:/mysql_log_err.txt
2.
查詢日誌    記錄創建的客戶端鏈接和執行的語句。
My.ini配置信息:
#Enter a name for the query log file. Otherwise a default name will be used.
#log=d:/mysql_log.txt
3.
更新日誌   記錄更改數據的語句。不同意使用該日誌。
My.ini配置信息:
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=d:/mysql_log_update.txt
4.
二進制日誌    記錄全部更改數據的語句。還用於複製。
My.ini配置信息:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=d:/mysql_log_bin
5.
慢日誌    記錄全部執行時間超過long_query_time秒的全部查詢或不使用索引的查詢。
My.ini配置信息:
#Enter a name for the slow query log file. Otherwise a default name will be used.
#long_query_time =1
#log-slow-queries= d:/mysql_log_slow.txt
Mysql日誌的關閉與開啓:
使用如下命令查看是否啓用了日誌
mysql>show variables like 'log_%’; 
 

 
    
凡Value值爲OFF的表示未開啓服務,若要開啓只須要將上的my.ini配置信息寫入(my.ini爲mysql安裝目錄下),而後去掉前面的「#」
號,再重啓mysql服務。OK,如今會看到指定的日誌文件已建立。相反地,若要中止mysql日誌服務,只須要將my.ini中對應的配置信息去掉即
可。
二進制日誌:
   
從概述中我能夠看到my.ini配置信息的log-bin沒有指定文件擴展名,這是由於即便你指定上擴展名它也不使用。當mysql建立二進制日誌文件
時,首先建立一個以「mysql_log_bin」爲名稱,以「.index」爲後綴的文件;再建立一個以「mysql_log_bin」爲名稱,以
「.000001」爲後綴的文件。當mysql服務從新啓動一次以「.000001」爲後綴的文件會增長一個,而且後綴名加1遞增;若是日誌長度超過了
max_binlog_size的上限(默認是1G)也會建立一個新的日誌文件;使用flush
logs(mysql命令符)或者執行mysqladmin –u –p flush-logs(windows命令提示符)也會建立一個新的日誌文件。
既然寫入的都是二進制數據,用記事本打開文件是看不到正常數據的,那怎麼查看呢?
使用BIN目錄下mysqlbinlog命令,如:
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000001
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000002
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000003
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000004
Bin>mysqlbinlog d:/mysql_log/mysql_bin.000005
使用SQL語句也可查看mysql建立的二進制的文件目錄:
 
Mysql> show master logs; 
 
查看當前二進制文件狀態:
 
mysql> show master status;  
 
至於準確的看懂日誌文件,還須要讀者仔細閱讀,深深體會,這裏就再也不奧述了!

 

 

 

任何一種數據庫中,都有各類各樣的日誌。MySQL也不例外,在Mysql中有4種不一樣的日誌、分別錯誤日誌、二進制日誌、查詢日誌和慢查詢日誌。這些日誌記錄着Mysql數據庫不一樣方面的蹤影。下文將介紹這4種不一樣的日誌做用和用途。

  一.錯誤日誌

  錯誤日誌在Mysql數據庫中很重要,它記錄着mysqld啓動和中止,以及服務器在運行過程當中發生的任何錯誤的相關信息。

  1.配置信息

  --log-error=[file-name]用來指定錯誤日誌存放的位置。

  若是沒有指定[file-name],默認hostname.err作爲文件名,默認存放在DATADIR目錄中。

  也能夠將log-error配置到my.cnf文件中,這樣就省去了每次在啓動mysqld時都手工指定--log-error.例如:

  [mysql@test2]$ vi /etc/my.cnf

  # The MySQL server

  [mysqld]

  ....

  log-error = /var/lib/mysql/test2_mysqld.err

  .....

  2.錯誤信息樣板

  080313 05:21:55 mysqld started

  080313 5:21:55 InnoDB: Started; log sequence number 0 43655

  080313 5:21:55 [Note] /usr/local/mysql/bin/mysqld: ready for connections.

  Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)

  080313 5:24:13 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown

  080313 5:24:13 InnoDB: Starting shutdown...

  080313 5:24:16 InnoDB: Shutdown completed; log sequence number 0 43655

  080313 5:24:16 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

  080313 05:24:16 mysqld ended

  080313 05:24:47 mysqld started

  080313 5:24:47 InnoDB: Started; log sequence number 0 43655

  080313 5:24:47 [Note] /usr/local/mysql/bin/mysqld: ready for connections.

  Version: '5.0.26-standard-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)

  080313 5:33:49 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown


三.查詢日誌

  查詢日誌記錄了clinet的全部的語句。

  Note:因爲log日誌記錄了數據庫全部操做,對於訪問頻繁的系統,此種日誌會形成性能影響,建議關閉。

  1.配置信息

  --log=[file-name]用來指定錯誤日誌存放的位置。

  若是沒有指定[file-name],默認爲主機名(hostname)作爲文件名,默認存放在DATADIR目錄中。

  也能夠將log配置到my.cnf文件中,這樣就省去了每次在啓動mysqld時都手工指定--log.例如:

  # The MySQL server

  [mysqld]

  ......

  #query-log

  log = /var/lib/mysql/query_log.log

  ......

  2.讀取查詢日誌

  查詢日誌是純文本格可,可使用OS文本讀取工具直接打開查看。例如:

  [mysql@test2]$ tail -n 15 query_log.log

  080313 7:58:28 17 Query show tables

  080313 8:07:45 17 Quit

  080313 10:01:48 18 Connect root@localhost on

  080313 10:02:38 18 Query SELECT DATABASE()

  18 Init DB test

  080313 10:02:42 18 Query show tables

  080313 10:03:07 18 Query select * from pet

  080313 10:06:26 18 Query insert into pet values('hunter','yxyup','cat','f','1996-04-29',null)

  080313 10:06:39 18 Query select * from pet

  080313 10:07:13 18 Query update pet set sex='m' where name='hunter'

  080313 10:07:38 18 Query delete from pet where name='hunter'

  080313 10:13:48 18 Query desc test8

  080313 10:14:13 18 Query create table t1(id int,name char(10))

  080313 10:14:41 18 Query alter table t1 add sex char(2)


  [mysql@test2]$


四.慢查詢日誌

  慢查詢日誌是記錄了執行時間超過參數long_query_time(單位是秒)所設定值的SQL語句日誌。

  Note:慢查詢日誌對於咱們發現性能有問題的SQL有很幫助,建議使用並常常分析

  1.配置信息

  --log-slow-queries=[file-name]用來指定錯誤日誌存放的位置。

  若是沒有指定[file-name],默認爲hostname-slow.log作爲文件名,默認存放在DATADIR目錄中。

  也能夠將log-slow-queries配置到my.cnf文件中,這樣就省去了每次在啓動mysqld時都手工指定--log-slow-queries.例如:

  # The MySQL server

  [mysqld]

  ......

  #slow-query-log

  log-slow-queries = /var/lib/mysql/slow_query_log.log

  ......

  2.讀取慢查詢日誌

  [mysql@test2]$ cat slow_query_log.log

  /usr/local/mysql/bin/mysqld, Version: 5.0.26-standard-log. started with:

  Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock

  Time Id Command Argument

  # Time: 080313 5:41:46

  # User@Host: root[root] @ localhost []

  # Query_time: 108 Lock_time: 0 Rows_sent: 0 Rows_examined: 8738

  use test;

  select count(1) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name;

  # Time: 080313 5:52:04

  # User@Host: root[root] @ localhost []

  # Query_time: 583 Lock_time: 0 Rows_sent: 0 Rows_examined: 508521177

  select count(1) from t1 a, t1 b where a.id=b.id;

  /usr/local/mysql/bin/mysqld, Version: 5.0.26-standard-log. started with:

  Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock

  Time Id Command Argument

  # Time: 080313 10:39:59

  # User@Host: root[root] @ localhost []

  # Query_time: 11 Lock_time: 0 Rows_sent: 4537467 Rows_examined: 4537467

  use test;

  select id from tail;

  若是慢查詢日誌記錄不少可使用mysqldumpslow進行分類彙總

  [mysql@test2]$ mysqldumpslow slow_query_log.log

  Reading mysql slow query log from slow_query_log.log

  Count: 1 Time=583.00s (583s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost

  select count(N) from t1 a, t1 b where a.id=b.id

  Count: 1 Time=108.00s (108s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost

  select count(N) from t1 a, t1 b,t1 c where a.id=b.id and b.name=c.name

  Count: 1 Time=11.00s (11s) Lock=0.00s (0s) Rows=4537467.0 (4537467), root[root]@localhost

  select id from tail;

mysql有如下幾種日誌:   
錯誤日誌:   -log-err   
查詢日誌:   -log   
慢查詢日誌:     -log-slow-queries   
更新日誌:     -log-update   
二進制日誌:   -log-bin   
    
在mysql的安裝目錄下,打開my.ini,在後面加上上面的參數,保存後重啓mysql服務就好了。   
例如:   
#Enter   a   name   for   the   binary   log.   Otherwise   a   default   name   will   be   used.   
#log-bin=   
#Enter   a   name   for   the   query   log   file.   Otherwise   a   default   name   will   be   used.   
#log=   
#Enter   a   name   for   the   error   log   file.   Otherwise   a   default   name   will   be   used.   
log-error=   
#Enter   a   name   for   the   update   log   file.   Otherwise   a   default   name   will   be   used.   
#log-update=     

查看日至:
1. 首先確認你日誌是否啓用了
mysql>show variables like 'log_bin';
若是啓用了,即ON
那日誌文件就在mysql的安裝目錄的data目錄下
cat/tail 日誌文件名

2. 怎樣知道當前的日誌
mysql> show master status;
3. 查看從某一段時間到某一段時間的日誌


mysqlbinlog --start-datetime='2008-01-19 00:00:00' --stop-datetime='2008-01-30 00:00:00' /var/log/mysql/mysql-bin.000006 > mysqllog1.log


附錄:

//顯示全部本機上的二進制日誌
mysql> SHOW MASTER LOGS;
//刪除全部本機上的二進制日誌
mysql> RESET MASTER;
//刪除全部建立時間在binary-log.xxx以前的二進制日誌
mysql> PURGE MASTER LOGS TO 'binary-log.xxx';
//只保留最近6天的日誌,以前的都刪掉
find /var/intra -type f -mtime +6 -name "*.log" -exec rm -f {} ;
//用鍵盤左上角(也就是Esc下面)那個鍵包圍起來,說明是命令。-1d是昨天,以此類推-1m是上個月等等
day=`/bin/date -v -1d +%Y%m%d`;
//給文件更名
mv xxx.log xxx-${day}.log;
//這裏還要加上數據庫的用戶名密碼,做用是更新日誌(包括二進制日誌和查詢日誌等等)
mysqladmin flush-logs

 


  二進制日誌也一般被稱爲binlog,它記當着全部的DDL和DML,但不包括數據查詢語句。

  1.配置信息

  --log-bin=[file-name]用來指定錯誤日誌存放的位置。

  若是沒有指定[file-name],默認爲主機名後面跟-bin作爲文件名,默認存放在DATADIR目錄中。

  也能夠將log-bin配置到my.cnf文件中,這樣就省去了每次在啓動mysqld時都手工指定--log-bin.例如:

  # The MySQL server

  [mysqld]

  ......

  log-bin = /var/lib/mysql/log-bin

  ......

  2.查看blnlog

  因爲binlog以是binary方式存取,不能直接查看,須要用mysql提供的mysqlbinlog工具查看。

  3.刪除binlog

  (1).用reset master命令刪除全部日誌,新日誌從新從000001開始編號

  (2).用purge master logs to 'mysq-bin.******' 命令能夠刪除指定編號前的全部日誌

  (3).用purge master logs to before 'YYYY-MM-DD HH24:MI:SS'命令能夠刪除'YYYY-MM-DD HH24:MI:SS'以前的產生的全部日誌

  (4).能夠在my.cnf中指定--expire_logs_days=#,此參數設置了binlog日誌的過時天數

  4.測試案例

  [mysql@test2]$ mysql -uroot -p

  Enter password:

  Welcome to the MySQL monitor. Commands end with ; or g.

  Your MySQL connection id is 18 to server version: 5.0.26-standard-log

  Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

  mysql> use test;

  Database changed

  mysql> select * from pet;

  +----------+--------+---------+------+------------+------------+

  | name | owner | species | sex | birth | death |

  +----------+--------+---------+------+------------+------------+

  | Fluffy | Harold | cat | f | 1993-02-04 | NULL |

  | Claws | Gwen | cat | m | 1994-03-17 | NULL |

  | Buffy | Harold | dog | f | 1989-05-13 | NULL |

  | Fang | Benny | dog | m | 1990-08-27 | NULL |

  | Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |

  | Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

  | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

  | Slim | Benny | snake | m | 1996-04-29 | NULL |

  +----------+--------+---------+------+------------+------------+

  8 rows in set (0.06 sec)

  mysql> insert into pet values('hunter','yxyup','cat','f','1996-04-29',null);

  Query OK, 1 row affected (0.03 sec)

  mysql> select * from pet;

  +----------+--------+---------+------+------------+------------+

  | name | owner | species | sex | birth | death |

  +----------+--------+---------+------+------------+------------+

  | Fluffy | Harold | cat | f | 1993-02-04 | NULL |

  | Claws | Gwen | cat | m | 1994-03-17 | NULL |

  | Buffy | Harold | dog | f | 1989-05-13 | NULL |

  | Fang | Benny | dog | m | 1990-08-27 | NULL |

  | Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |

  | Chirpy | Gwen | bird | f | 1998-09-11 | NULL |

  | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |

  | Slim | Benny | snake | m | 1996-04-29 | NULL |

  | hunter | yxyup | cat | f | 1996-04-29 | NULL |

  +----------+--------+---------+------+------------+------------+

  9 rows in set (0.00 sec)

mysql> update pet set sex='m' where name='hunter';

  Query OK, 1 row affected (0.00 sec)

  Rows matched: 1 Changed: 1 Warnings: 0

  mysql> delete from pet where name='hunter';

  Query OK, 1 row affected (0.00 sec)

  [mysql@test2]$ mysqlbinlog log-bin.000002

  /*!40019 SET @@session.max_insert_delayed_threads=0*/;

  /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

  # at 4

  #080313 7:52:47 server id 1 end_log_pos 98 Start: binlog v 4, server v 5.0.26-standard-log created 080313 7:52:47

  # Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.

  # at 98

  #080313 10:06:26 server id 1 end_log_pos 229 Query thread_id=18 exec_time=0 error_code=0

  use test;

  SET TIMESTAMP=1205373986;

  SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;

  SET @@session.sql_mode=0;

  /*!C latin1 */;

  SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;

  insert into pet values('hunter','yxyup','cat','f','1996-04-29',null);

  # at 229

  #080313 10:07:13 server id 1 end_log_pos 334 Query thread_id=18 exec_time=0 error_code=0

  SET TIMESTAMP=1205374033;

  update pet set sex='m' where name='hunter';

  # at 334

  #080313 10:07:38 server id 1 end_log_pos 432 Query thread_id=18 exec_time=0 error_code=0

  SET TIMESTAMP=1205374058;

  delete from pet where name='hunter';

  # at 432

  #080313 10:14:13 server id 1 end_log_pos 532 Query thread_id=18 exec_time=0 error_code=0

  SET TIMESTAMP=1205374453;

  create table t1(id int,name char(10));

  # at 532

  #080313 10:14:41 server id 1 end_log_pos 625 Query thread_id=18 exec_time=0 error_code=0

  SET TIMESTAMP=1205374481;

  alter table t1 add sex char(2);

  # End of log file

  ROLLBACK /* added by mysqlbinlog */;

  /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

  [mysql@test2]$

  能夠看出,三條DML操做和兩條DDL都記錄到了binlog中了,而select並無記錄。

相關文章
相關標籤/搜索