mysql配置文件完全_MySQL配置文件my.cnf详解
以下是Mysql數據庫服務器配置文件/etc/my.cnf的詳細配置。應用場合是InnoDB引擎,4核CPU, 32位SUSE。
[client]
port= 3306
socket= /tmp/mysql.sock
# The MySQL server
[mysqld]
bind-address = 192.168.0.11
port= 3306
socket= /tmp/mysql.sock
##設置表的默認類型。和default-storage-engine同義
default-table-type = innodb
#以下是網絡傳輸配置
#連接進程幀聽隊列的大小
back_log = 50
#之前有過經驗,connections超過370的時候,線程的??臻g被占滿,mysqld無法工作,所以限制為200
max_connections=200
#連接500次發生錯誤之后,屏蔽從該host的所有連接
max_connect_errors = 500
#通信緩沖區的最大長度。包或任何生成的/中間字符串的最大大小。
max_allowed_packet = 32M
在查詢之間將通信緩沖區重設為該值。如果語句超出該長度,緩沖區自動擴大,直到max_allowed_packet字節。
net_buffer_length = 8K
#以下是查詢優化
#避免外部鎖定(默認是ON). 對應variable的skip_external_locking
skip-locking
#索引緩沖區(僅作用于MYISAM表和臨時表),決定了數據庫索引處理的速度
key_buffer_size = 10M
#所有線程打開的表的數目(一個表使用2個文件描述符),表數量多,就要大一些。增大該值可以增加mysqld需要的文件描述符的數量??梢詸z查Opened_tables(已經打開的表的數量)狀態變量來檢查你是否需要增加表緩存。
table_cache = 2048
#每個排序線程分配的緩沖區的大小。增加該值可以加快ORDER BY或GROUP BY操作
sort_buffer_size = 5M
#用于完全聯接的緩沖區的大小(當不使用索引的時候使用聯接操作)。
#一般情況獲得快速聯接的最好方法是添加索引。當增加索引時不可能通過增加join_buffer_size值來獲得快速完全聯接。
#將為兩個表之間的每個完全聯接分配聯接緩沖區。對于多個表之間不使用索引的復雜聯接,需要多聯接緩沖區。
join_buffer_size = 8M
#服務器應緩存多少線程以便重新使用。當客戶端斷開連接時,如果線程少于thread_cache_size,則客戶端的線程被放入緩存。
#如果狀態變量Threads_created(創建用來處理連接的線程數)較大,你可能要增加thread_cache_size值。緩存訪問率的計算方法Threads_created/Connections(試圖連接到(不管是否成功)MySQL服務器的連接數)
thread_cache_size = 8
#使應用程序向線程系統提供需要同時運行的期望的線程數目的提示
thread_concurrency = 8
#為緩存查詢結果分配的內存的數量,加快查詢的速度。默認值是0,即禁用查詢緩存。
query_cache_size = 64M
#不要緩存大于該值的結果,默認值是1048576(1MB)。
query_cache_limit = 2M
#ft_min_word_len和ft_max_word_len表示FULLTEXT索引的最小和最大字長
ft_min_word_len = 4
#每個線程的堆棧大小
thread_stack = 192K
#事務隔離級別。READ-UNCOMMITTED: 未提交讀會出現臟讀、不可重復讀、幻讀 ( 隔離級別最低,并發性能高 ) ;READ-COMMITTED: 提交讀會出現不可重復讀、幻讀問題(鎖定正在讀取的行);REPEATABLE-READ: 默認值,可重復讀會出幻讀(鎖定所讀取的所有行);SERIALIZABLE: 序列化保證所有的情況不會發生(鎖表)
transaction_isolation = REPEATABLE-READ
#聯合查詢或者view的時候,可能會建立臨時表,如果在磁盤上建的話,會導致性能低,設置此值可以一定程度上加快速度
tmp_table_size = 64M
#每個線程連續掃描時為掃描的每個表分配的緩沖區的大小,如果進行多次連續掃描,可能需要增加該值
read_buffer_size = 1M
#當排序后按排序后的順序讀取行時,則通過該緩沖區讀取行,避免搜索硬盤。將該變量設置為較大的值可以大大改進ORDER BY的性能。但是,這是為每個客戶端分配的緩沖區,因此你不應將全局變量設置為較大的值。相反,只為需要運行大查詢的客戶端更改會話變量。
read_rnd_buffer_size = 2M
#以下是主從同步配置
# Replication Master Server (default)
#主機是1。備機從2開始。
server-id??? = 1
#啟動數據庫更新二進制日志記錄,日志文件名前綴為mysql-bin
log-bin=mysql-bin
#在事務過程中容納二進制日志SQL語句的緩存大小,
#二進制日志緩存是服務器支持事務存儲引擎并且服務器啟用了二進制日志(–log-bin選項)的前提下為每個客戶端分配的內存。
#如果經常使用大的,多語句事務,可以增加該值以獲得更有的性能
binlog_cache_size = 5M
#是否記錄慢查詢,默認OFF。用long_query_time變量的值來確定“慢查詢”。
log_slow_queries
#超過2S的query將記slow query日志
long_query_time = 2
#沒有使用索引的查詢也作為慢速查詢記錄到慢速日志里
#或者用log-queries-not-using-indexes
log_long_format
#告訴主服務器,如果當前的數據庫(即USE選定的數據庫)是db_name,不應將更新保存到二進制日志中。
binlog-ignore-db = information_schema
binlog-ignore-db = cluster
binlog-ignore-db = mysql
#告訴從服務器限制默認數據庫(由USE所選擇)為db_name的語句的復制
replicate-do-db = test1
replicate-do-db = test2
#跨庫更新表要用到如下配置。告訴從服務器線程限制復制更新的表匹配指定的數據庫和表名模式的語句。模式可以包含‘%’和‘_’通配符,與LIKE模式匹配操作符具有相同的含義。要指定多個表,應多次使用該選項,每個表使用一次。該選項可以跨數據庫進行更新。
replicate-wild-do-table = test1.%
replicate-wild-do-table = test2.%
#當Slave從Master數據庫讀取日志時更新新寫入日志中。如果只啟動log-bin 而沒有啟動log-slave-updates則Slave只記錄針對自己數據庫操作的更新
log-slave-updates
#以下是InnoDB引擎配置
#InnoDB 不會自己建立目錄,必須自己使用操作系統命令建立相應的目錄。檢查你的 MySQL 服務程序在 datadir 目錄里有足夠的權限建立文件(mysql用戶組擁有)。
#這是InnoDB表的目錄共用設置。如果沒有設置,InnoDB 將使用MySQL的 datadir 目錄為缺省目錄。如果設定一個空字串,可以在 innodb_data_file_path 中設定絕對路徑。
innodb_data_home_dir = /data/dbdata/
#單獨指定數據文件的路徑與大小。數據文件的完整路徑由 innodb_data_home_dir 與這里所設定值的組合。文件大小以 MB 單位指定。因此在文件大小指定后必有“M”。 InnoDB 也支持縮寫“G”, 1G = 1024M。從 3.23.44 開始,在那些支持大文件的操作系統上可以設置數據文件大小大于 4 GB。而在另一些操作系統上數據文件必須小于 2 GB。
#如果用 autoextend 選項描述最后一個數據文件,當 InnoDB 用盡所有表自由空間后將會自動擴充最后一個數據文件,每次增量為8MB
#InnoDB是不會注意你的OS文件尺寸限制的,在一些文件系統中你可能要設定最大容量2G限制:
#innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:100M:autoextend:max:2000M
#這里應當預先創建好10個2048M的文件,目前還沒有創建
innodb_data_file_path = ibdata1:2000M;ibdata2:2000M;ibdata3:2000M;ibdata4:2000M;ibdata5:2000M;ibdata6:2000M;ibdata7:2000M;ibdata8:2000M;ibdata9:2000M;ibdata10:2000M:autoextend
#InnoDB 日志文件的路徑。如果沒有明確指定將默認在 MySQL 的 datadir 目錄下建立兩個 5 MB 大小的ib_logfile0和ib_logfile1文件。
#將日志文件與數據文件分別放在不同的物理硬盤中對提高性能通常是很有益的
innodb_log_group_home_dir = /data/dbdata/
#主要用來存儲表結構和數據字典,表越多要求內存就越大
innodb_additional_mem_pool_size = 16M
# You can set .._buffer_pool_size up to 50 – 80 %
# of RAM but beware of setting memory usage too high
#表和索引數據的內存緩沖區,越大性能越高。但不能超過物理內存的50%。若64位OS,該值可以更大
#32位OS受2G內存的限制,不能將內存使用設置太高, glibc 會把進程堆增長到線程堆棧之上,這將會使服務器崩潰。下面的接近或超過于 2G 將會很危險:
#innodb_buffer_pool_size + key_buffer +max_connections * (sort_buffer_size + record_buffer_size + binlog_cache_size) + max_connections * 2 MB
#每個線程將使用 2MB(MySQL AB 二進制版本為 256 KB)的堆棧,在最壞的環境下還會使用 sort_buffer_size + record_buffer_size 的附加內存。
innodb_buffer_pool_size = 1G
#InnoDB 中的文件 I/O 線程。通常設置為 4
innodb_file_io_threads = 4
#并發線程。2*(內核數量+磁盤數量)
innodb_thread_concurrency = 16
#1表示每次事務結束都寫日志并刷新磁盤;2表示每次事務寫日志但不刷新磁盤(每秒刷新);0(默認值)表示每秒寫日志并刷新磁盤。0表示最多丟失1秒的數據,但性能最好。
innodb_flush_log_at_trx_commit = 0
#InnoDB 將日志寫入日志磁盤文件前的緩沖大小。理想值為 1M 至 8M。大的日志緩沖允許事務運行時不需要將日志保存入磁盤而只到事務被提交(commit)。因此,如果有大的事務,設置大的日志緩沖可以減少磁盤I/O。
innodb_log_buffer_size = 8M
# Set .._log_file_size to 25 % of buffer pool size
#日志文件大小設置。增大該值可減少刷新日志頻率,但會延長mysql啟動和災難恢復的時間。
#日志組中的每個日志文件的大小(單位 MB)。如果 n 是日志組(innodb_log_files_in_group)中日志文件的數目,那么理想的數值為 1M 至緩沖池(innodb_log_buffer_size)大小的 1/n。較大的值,可以減少刷新緩沖池的次數,從而減少磁盤 I/O。但是大的日志文件意味著在崩潰時需要更長的時間來恢復數據。
innodb_log_file_size = 256M
#日志組中的日志文件數目。InnoDB 以環型方式(circular fashion)寫入文件。數值 3 被推薦使用
innodb_log_files_in_group = 3
#InnoDB行鎖導致的死鎖等待時間(默認值是50S)
innodb_lock_wait_timeout = 30
#是否支持分布式事務,關閉以提高性能(默認是ON)
innodb_support_xa = OFF
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
總結
以上是生活随笔為你收集整理的mysql配置文件完全_MySQL配置文件my.cnf详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: log4j 禁止类输出日志_Spring
- 下一篇: linux cmake编译源码,linu