MySQL——my.cnf參數設置說明


  1 [mysqld]
  2 server-id=513306                        # Mysql唯一標識,一個集群中唯一;
  3 port=3306                               # 服務端口,默認3306
  4 user = mysql                            # 啟動用戶,建議用戶mysql
  5 bind_address= 0.0.0.0                   # 綁定的IP地址,建議使用具體地址
  6 basedir=/mysql/app/mysql                # mysql安裝路徑,建議使用絕對路徑
  7 datadir=/mysql/data/3306/data           # 數據目錄
  8 socket=/mysql/data/3306/mysql.sock      # 指定套接字文件
  9 pid-file=/mysql/data/3306/mysql.pid     # 指定pid文件
 10 character-set-server=utf8               # 指定默認編碼格式
 11 skip-character-set-client-handshake=1   #
 12 autocommit = 0                          # 是否開啟自動提交, 0:不開啟嗎1:開啟
 13 #skip_name_resolve = 1
 14 max_connections = 800                   # 最大連接數
 15 max_connect_errors = 1000               # 最大連接錯誤
 16 default-storage-engine=INNODB           # 設置默認引擎,常用引擎INNODB,MYISAN,建議使用INNODB
 17 transaction_isolation = READ-COMMITTED  # 事務隔離級別,可選參數有:READ-UNCOMMITTED(讀取未提交內容), READ-COMMITTED(讀取提交內容), REPEATABLE-READ(可重讀), SERIALIZABLE(可串行化).
 18 explicit_defaults_for_timestamp = 1     # 參數是否初始化
 19 sort_buffer_size = 32M                  # 排序使用的緩存大小,MySQL5.7中,默認為1M(優化參數之一,一般情況下默認數值就夠用了)
 20 join_buffer_size = 128M                 # join操作所用用的緩存大小
 21 tmp_table_size = 72M                    # 臨時表大小
 22 max_allowed_packet = 16M                # 服務端最大允許接收的數據包大小
 23 sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"   # mysql支持的基本語法及校驗規則
 24 interactive_timeout = 1800              # 是MySQL在等待一個活動連接關閉連接前等待的秒數。默認28800秒,8小時
 25 wait_timeout = 1800                     # 是MySQL在等待一個非活動連接關閉連接前等待的秒數。默認28800秒,8小時
 26 read_buffer_size = 16M                  # (數據文件存儲順序)是MySQL讀入緩沖區的大小,將對表進行順序掃描的請求將分配一個讀入緩沖區,MySQL會為它分配一段內存緩沖區,read_buffer_size變量控制這一緩沖區的大小,如果對表的順序掃描非常頻繁,並你認為頻繁掃描進行的太慢,可以通過增加該變量值以及內存緩沖區大小提高其性能,read_buffer_size變量控制這一提高表的順序掃描的效率 數據文件順序。
 27 read_rnd_buffer_size = 32M              # 是MySQL的隨機讀緩沖區大小,當按任意順序讀取行時(列如按照排序順序)將分配一個隨機讀取緩沖區,進行排序查詢時,MySQL會首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要大量數據可適當的調整該值,但MySQL會為每個客戶連接分配該緩沖區所以盡量適當設置該值,以免內存開銷過大。表的隨機的順序緩沖 提高讀取的效率。
 28 
 29 #event_scheduler =1
 30 
 31 query_cache_type = 1                    # 控制着查詢緩存工能的開啟的關閉。0時表示關閉,1時表示打開,2表示只要select 中明確指定SQL_CACHE才緩存。
 32 query_cache_size=1M                     # 查詢緩存大小, 一般 1M很夠用了
 33 table_open_cache=2048                   # 文件描述符的緩存大小,4G內存的機器,建議設置為2048,
 34 thread_cache_size=768                   # 線程池緩存大小,當客戶端斷開連接后 將當前線程緩存起來 當在接到新的連接請求時快速響應 無需創建新的線程
 35 myisam_max_sort_file_size=10G           #  mysql重建索引時允許使用的臨時文件最大大小
 36 myisam_sort_buffer_size=64M            # MyISAM表發生變化時重新排序所需的緩沖。一般64M足矣。
 37 key_buffer_size=32M                     #  Key Buffer大小,用於緩存MyISAM表的索引塊。決定數據庫索引處理的速度(尤其是索引讀),對於內存在4GB左右的服務器該參數可設置為256M或384M。注意:該參數值設置的過大反而會是服務器整體效率降低!
 38 read_buffer_size=8M                     # 用於對MyISAM表全表掃描時使用的緩沖區大小。針對每個線程進行分配(前提是進行了全表掃描)。進行排序查詢時,MySql會首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要排序大量數據,可適當調高該值。但MySql會為每個客戶連接發放該緩沖空間,所以應盡量適當設置該值,以避免內存開銷過大。
 39 read_rnd_buffer_size=4M                 # 是MySQL的隨機讀緩沖區大小,當按任意順序讀取行時(列如按照排序順序)將分配一個隨機讀取緩沖區,進行排序查詢時,MySQL會首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要大量數據可適當的調整該值,但MySQL會為每個客戶連接分配該緩沖區所以盡量適當設置該值,以免內存開銷過大。表的隨機的順序緩沖 提高讀取的效率。
 40 
 41 back_log=1024                           # 值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。由默認的50,每個連接256kb
 42 #flush_time=0
 43 open_files_limit=65536                  # MySQL打開了多少個文件描述符,默認最小1024
 44 table_definition_cache=1400             # 表定義文件緩存相比表文件描述符緩存所消耗的內存更小,其默認值是400
 45 #binlog_row_event_max_size=8K
 46 # 有時候為了避免master.info和中繼日志崩潰,在容忍額外的fsync()帶來的開銷,推薦設置
 47 #sync_master_info=10000                 # 默認為10000,每間隔多少事務刷新master.info,如果是table(innodb)設置無效,每個事務都會更新,建議 設置為1
 48 #sync_relay_log=10000                   # 默認為10000,即每10000次sync_relay_log事件會刷新到磁盤。為0則表示不刷新,交由OS的cache控制,建議設置為1
 49 #sync_relay_log_info=10000              # 默認為10000,每間隔多少事務刷新relay-log.info,建議設置為1
 50 
 51 ########log settings########
 52 log-output=FILE                         # 日志存儲方式,TABLEFILE,建議設置為FILE,默認為FILE
 53 general_log = 0                         # 所有到達MySQL Server的SQL語句記錄下來。通用日志,不建議開啟,這個很消耗磁盤空間,用於優化及故障排查
 54 general_log_file=/mysql/log/3306/itpuxdb-general.err    # 指定通用日志文件
 55 slow_query_log = ON                     # ON 為開啟慢查詢日志,off表示關閉慢查詢日志,用於優化SQL語句
 56 slow_query_log_file=/mysql/log/3306/itpuxdb-query.err   #指定慢查詢日志文件
 57 long_query_time=10                      # 指定多少秒返回查詢的結果為慢查詢
 58 log-error=/mysql/log/3306/itpuxdb-error.err     # 指定錯誤日志
 59 
 60 log_queries_not_using_indexes = 1       # 開啟 記錄沒有使用索引查詢語句,1或者ON開啟,記錄至慢日志中
 61 log_slow_admin_statements = 1           #記錄那些慢的optimize table,analyze table和alter table語句,1或者ON開啟,記錄至慢日志中
 62 log_slow_slave_statements = 1           # 記錄由Slave所產生的慢查詢
 63 log_throttle_queries_not_using_indexes = 10     # 設定每分鍾記錄到日志的未使用索引的語句數目,超過這個數目后只記錄語句數量和花費的總時間 
 64 expire_logs_days = 90                   # 保留多少天
 65 min_examined_row_limit = 100            # 對於查詢掃描行數小於此參數的SQL,將不會記錄到慢查詢日志中
 66 #log_bin = "/log/bin_log/binlog"
 67 
 68 ########replication settings########
 69 #master_info_repository = TABLE         # 值如果為FILE,建議將其修改為TABLE
 70 #relay_log_info_repository = TABLE
 71 #log_bin = bin.log
 72 #sync_binlog = 1
 73 #gtid_mode = on
 74 #enforce_gtid_consistency = 1
 75 #log_slave_updates
 76 #binlog_format = row 
 77 #relay_log = relay.log
 78 #relay_log_recovery = 1
 79 #binlog_gtid_simple_recovery = 1
 80 #slave_skip_errors = ddl_exist_errors
 81 
 82 ########innodb settings########
 83 # 根據您的服務器IOPS能力適當調整,只有當你在頻繁寫操作的時候才有意義
 84 # 一般配普通SSD盤的話,可以調整到 10000 - 20000
 85 # 配置高端PCIe SSD卡的話,則可以調整的更高,比如 50000 - 80000 
 86 innodb_io_capacity = 4000               # 動態調整刷新臟頁的數量,一般設置最大值的1/2
 87 innodb_io_capacity_max = 8000           #動態調整刷新臟頁的最大數量
 88 innodb_buffer_pool_size = 200M          # 緩存池大小,默認128M,建議設置為總內存大小的,設置為物理內存的80%
 89 innodb_buffer_pool_instances = 8        # 可以開啟多個內存緩沖池,把需要緩沖的數據hash到不同的緩沖池中,這樣可以並行的內存讀寫。
 90 innodb_buffer_pool_load_at_startup = 1  # 默認為關閉OFF。如果開啟該參數,啟動MySQL服務時,MySQL將本地熱數據加載到InnoDB緩沖池中。
 91 innodb_buffer_pool_dump_at_shutdown = 1 # 默認啟用。指定在MySQL服務器關閉時是否記錄在InnoDB緩沖池中緩存的頁面,以便在下次重新啟動時縮短預熱過程。
 92 innodb_lru_scan_depth = 2000            # LRU列表中可用頁的數量,默認值為1024。
 93 innodb_lock_wait_timeout = 5            # 事務鎖超時時間 
 94 #innodb_flush_method = O_DIRECT
 95 
 96 innodb_log_file_size = 200M             # mysql事務日志文件(ib_logfile0)的大小;
 97 innodb_log_files_in_group = 2           # 指定你有幾個日志組。一般2-3個日值組。默認為兩個。
 98 innodb_log_buffer_size = 16M            # 事務在內存中的緩沖大小。
 99 
100 innodb_undo_logs = 128                  # InnoDB使用的回滾段個數,必須設置35個以上;,默認128
101 innodb_undo_tablespaces = 3             # 是控制undo是否開啟獨立的表空間的參數,為0表示:undo使用系統表空間,即ibdata1,不為0表示:使用獨立的表空間,一般名稱為 undo001 undo002,存放地址的配置項為:innodb_undo_directory,默認配置為0,參數必須大於或等於2,即回收(收縮)一個undo log日志文件時,要保證另一個undo log是可用的。
102 innodb_undo_log_truncate = 1            # 參數設置為1,即開啟在線回收(收縮)undo log日志文件,支持動態設置。
103 innodb_max_undo_log_size = 2G           # 每一個undo日志文件大小,默認1G
104 
105 innodb_flush_neighbors = 1              # 刷臟頁的控制策略,參數就是用來控制這個行為的,值為 1 的時候會有上述的“連坐”機制,值為 0 時表示不找鄰居,自己刷自己的。建議設置為0
106 innodb_purge_threads = 4                # 負責回收已經使用並分配的undo頁,可以指定多個innodb_purge_threads來進一步加快和提高undo回收速度。
107 innodb_large_prefix = 1                 # 單索引限制,是否開啟允許列索引最大達到3072,不開啟只有767
108 innodb_thread_concurrency = 64          # 來限制並發線程的數量
109 innodb_print_all_deadlocks = 1          # 是否開啟保存死鎖日志,死鎖日志存放到error_log配置的文件里面
110 innodb_strict_mode = 1                  # InnoDB嚴格檢查模式,尤其采用了頁數據壓縮功能后,最好是開啟該功能。開啟此功能后,當創建表(CREATE TABLE)、更改表(ALTER TABLE)和創建索引(CREATE INDEX)語句時,如果寫法有錯誤,不會有警告信息,而是直接拋出錯誤,這樣就可直接將問題扼殺在搖籃
111 innodb_sort_buffer_size = 64M
112 innodb_flush_log_at_trx_commit=1        # sync_binlog 兩個參數是控制MySQL 磁盤寫入策略以及數據安全性的關鍵參數,當兩個參數都設置為1的時候寫入性能最差,但安全性最高,
113 # 設置為0,log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁盤)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁盤的操作。
114 # 設置為1,每次事務提交時MySQL都會把log buffer的數據寫入log file,並且flush(刷到磁盤)中去.
115 # 設置為2,每次事務提交時MySQL都會把log buffer的數據寫入log file.但是flush(刷到磁盤)操作並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁盤)操作。
116 innodb_autoextend_increment=64          # 默認 8M ,單位為M,配置表空間自動擴展,每次擴展多大M
117 innodb_concurrency_tickets=5000         # 這個參數設置為一種tickets,默認是5000,
118 innodb_old_blocks_time=1000             # 頁讀取到mid位置后,需要等待多久才會被加入到LRU列表的熱端。默認1000ms
119 innodb_open_files=65536                 # 限制Innodb能打開的表的數據。
120 innodb_stats_on_metadata=0              # 是否自動更新統計信息,默認為0關閉,
121 innodb_file_per_table=1                 # MySQL InnoDB引擎 默認會將所有的數據庫InnoDB引擎的表數據存儲在一個共享空間中:ibdata1,當增刪數據庫的時候,ibdata1文件不會自動收縮,單個數據庫的備份也將成為問題。通常只能將數據使用mysqldump 導出,然后再導入解決這個問題。如果啟用了innodb_file_per_talbe參數,需要注意的是每張表的表空間內存放的只是數據、索引和插入緩沖Bitmap頁,其他數據如:回滾信息、插入緩沖索引頁、系統事物信息、二次寫緩沖(Double write buffer)等還是放在原來的共享表空間內。同時說明了一個問題:即使啟用了innodb_file_per_table參數共享表空間還是會不斷的增加其大小的。
122 #innodb_checksum_algorithm=0            # 是否開啟checksum算法
123 innodb_data_file_path=ibdata1:200M;ibdata2:200M;ibdata3:200M:autoextend:max:5G      #可配置表空間相關參數。
124 innodb_temp_data_file_path = ibtmp1:200M:autoextend:max:20G         # 可配置臨時表空間相關參數。
125 
126 innodb_buffer_pool_dump_pct = 40        # 指定每個緩沖池最近使用的頁面讀取和轉儲的百分比,1-100,默認25
127 innodb_page_cleaners = 4                # 多個頁面清理線程刷臟頁,用於指定頁面清理線程的數量。其默認值1,維持了之前單個頁面清理線程的配置
128 innodb_purge_rseg_truncate_frequency = 128      # 指定purge操作被喚起多少次之后才釋放rollback segments。當undo表空間里面的rollback segments被釋放時,undo表空間才會被truncate。由此可見,該參數越小,undo表空間被嘗試truncate的頻率越高。
129 binlog_gtid_simple_recovery=1           #這個變量用於在MySQL重啟或啟動的時候尋找GTIDs過程中,控制binlog 如何遍歷的算法?
130 #2. 當binlog_gtid_simple_recovery=FALSE 時:
131 #    為了初始化 gtid_executed,算法是: 從newest_binlog -> oldest_binlog 方向遍歷讀取,如果發現有Previous_gtids_log_event , 那么就停止遍歷
132 #    為了初始化 gtid_purged,算法是:   從oldest_binlog -> newest_binlog 方向遍歷讀取, 如果發現有Previous_gtids_log_event(not empty)或者 #至少有一個Gtid_log_event的文件,那么就停止遍歷
133 #3. 當binlog_gtid_simple_recovery=TRUE 時:
134 #    為了初始化 gtid_executed , 算法是: 只需要讀取newest_binlog
135 #    為了初始化 gtid_purged, 算法是: 只需要讀取oldest_binlog
136 #4. 當設置binlog_gtid_simple_recovery=TRUE , 如果MySQL版本低於5.7.7 , 可能會有gitd計算出錯的可能,具體參考官方文檔詳細描述
137 log_timestamps=system                   # 主要是控制 error log、slow_log、genera log,等等記錄日志的顯示時間參數,但不會影響 general log 和 slow log 寫到表 (mysql.general_log, mysql.slow_log) 中的顯示時間
138 #transaction_write_set_extraction=MURMUR32      # 基於WRITESET的並行復制方式
139 show_compatibility_56=on                # mysql兼容性是否兼容mysql5.6,這是是開啟兼容
140 
141 
142 lower_case_table_names=1        # 是否區分大小寫 說明 0:區分大小寫,1:不區分大小寫
143 read_only=1                     # 普通是否可讀, 0:關閉可讀, 1:開啟可讀
144 super_read_only=1               # 管理員(super)用戶是否可讀,超級可讀 ,0:關閉可讀, 1:開啟可讀

轉:https://www.cnblogs.com/small-wei/p/11993241.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM