MySQL5.6 选项和变量整理
MySQL5.6 選項和變量整理?
?--allow-suspicious-udfs
這個選項控制是否用戶定義函數只有一個xxx符號用于主函數加載。默認,該選項是關閉并且只具有至少一個輔助符號的UDFs才可以加載。這可以防止嘗試從共享對象文件而沒有包含合法的 UDFs加載函數。看到 Sec
?
tion 22.3.2.6, “User-Defined Function Security Precautions”
--ansi
使用標準(ANSI)SQL語法代替MySQL語法。為更精確的控制服務器的SQL模式,使用 --sql-mode選項代替。見Section 1.8.3, “Running MySQL in ANSI Mode”和Section 5.1.7, “Server SQL Modes”。
--basedir=path, -b path
MySQL安裝目錄,所有路徑相對于這個目錄
--big-tables
使大結果集通過保存所有臨時集到文件。這個選項可以防止大多數“table full” 錯誤,但也會減緩對內存中的表的查詢。自從MySQL 3.23.2,服務器能夠處理大結果集自動通過使用內存存儲小的臨時表和在必要時轉為硬盤表。
?--bind-address=addr
MySQL服務對于TCP/IP連接僅監聽單個網絡套接字。這個套接字綁定單個地址。但對單個地址可能映射到多個網絡接口。為了指定一個地址,在服務啟動使用--bind-address=addr,addr可以是IPv4,或IPv6地址或主機名。如果是主機名,服務解析該主機名車IP地址,然后綁定IP地址。
如果addr 為*,服務能接受支持IPv6的主機的所有IPv6和IPv4接口的TCP/IP連接,否則接受IPv4的TCP/IP連接。使用該值允許所有服務接口的IPv4和IPv6的連接。自從MySQL5.6.6,該選項默認為*
如果add 為0.0.0.0,服務接受所有主機IPv4接口的TCP/IP連接。在MySQL5.6.6之前,該值為默認值。
如果add 為::,服務接受所有IPv4和IPv6接口的TCP/IP連接。
如果地址為IPv4映射地址,服務僅接受該地址的TCP/IP連接。可以以IPv4或IPv6格式。例如,如果服務綁定為::ffff:127.0.0.1,客戶可以使用--host=127.0.0.1 或 --host=::ffff:127.0.0.1連接。
如果地址是正規IPV4或IPv6地址(例如127.0.0.1 或 ::1),僅接受來自IPv4或IPv6地址。
--binlog-format={ROW|STATEMENT|MIXED}
指定使用復制格式row-based,statement-based, 或mixed。在MySQL5.6默認是statement-based
在某些條件下,在運行時修改變量不怎么可能,或引起復制失敗。更多信息見Section 5.2.4.2, “Setting The Binary Log Format”。
--bootstrap
?mysql_install_db 腳本使用該選項來創建MySQL權限表沒有必要開啟MySQL服務。在MySQL5.6.6版本或之后版本,當使用該選項,復制和全局事務ID會自動不可用。
--character-sets-dir=path
字符集安裝目錄
--character-set-client-handshake
不忽略客戶端發送的字符集信息。忽略客戶端信息和使用默認服務的字符集。使用--skip-character-set-client-handshake。這使得MySQL行為像 MySQL 4.0。
--character-set-filesystem=charset_name
文件系統字符集。這選項設置系統變量 character_set_filesystem
--character-set-server=charset_name, -C charset_name
使用charset_name作為默認服務字符集。見 Section 10.5, “Character Set Configuration”。如果使用該選項指定一個非默認字符集。你應該也使用 --collation-server指定校驗規則。
--chroot=path, -r path
在啟動期間,通過使用系統調用 chroot(),把 mysqld 服務放進一個封閉環境。這是推薦的一個安全措施,
使用這個選項有些限制 LOAD DATA INFILE和 SELECT ... INTO OUTFILE。
--collation-server=collation_name
使用 collation_name作為默認檢驗規則。
?--console
?(僅用于Windows)寫錯誤信息到 stderr 和 stdou。如果使用該選項, mysqld不關閉控制臺窗口。
--core-file
如果 mysqld死掉,寫一個內核文件。內核文件的名稱和位置依賴于系統。在linux,一個名為core.pid內核文件被當前進程的工作目錄。對于 mysqld是數據目錄。pid代表服務進程ID。在Mac OS X,一個名為 core.pid 文件被寫到/cores目錄。在 Solaris,使用 coreadm 命令指定內核文件被寫到位置和命什么名。 對于一些系統,獲得內核文件也必須給 mysqld_safe指定 --core-file-size 見 Section 4.3.2, “mysqld_safe — MySQL Server Startup Script”。在一些系統,如 Solaris,如果你使用 --user選項,你不能獲得內核文件
可能會有額外的約束或限制。如在服務啟動之前,需要執行 ulimit -c unlimited。詳細請參照系統說明
--datadir=path, -h path
數據目錄
--debug[=debug_options], -# [debug_options]
如果MySQL使用 -DWITH_DEBUG=1來編譯。使用該選項來獲取跟蹤 mysqld正做什么。一個經典 debug_options字符是 'd:t:o,file_name'。默認是 'd:t:i:o,mysqld.trace'見 MySQL Internals: Porting to Other Systems。使用 -DWITH_DEBUG=1 編譯 MySQL,支持啟用調試,你可以在服務啟動時使用--debug="d,parser_debug" 選項,這引起 Bison 解析器,用于處理SQL語句來轉儲一個解析跟蹤到服務的標準錯誤輸出。通常,這個輸出寫入錯誤日志。此選項可以使用多次。值從 + 開始添加或-從以前值減去。例如 --debug=T --debug=+P設置值P:T。
--debug-sync-timeout[=N]
控制測試和調試是否啟用調試同步設備。使用調試同步要求編譯MySQL時使用 -DENABLE_DEBUG_SYNC=1選項(Section 2.9.4, “MySQL Source-Configuration Options”)。如果調試同步不被編譯,該選項不可用。選項值是超時秒數。默認值是0,表示禁用調試同步。啟用它,指定一個大于0的值,對個體同步點這個值也會成為默認的超時。如果選項沒有指定值,超時設置為300秒。
調試同步設備的描述和如何使用同步點,見 MySQL Internals: Test Synchronization。
--default-authentication-plugin=plugin_name
默認身份認證插件。可接受的值 mysql_native_password(使用MySQL本地密碼)和sha256_password(用SHA-256 密碼)關于這些插件見Section 6.3.7.1, “The Native Authentication Plugins”,和 Section 6.3.7.2, “The SHA-256 Authentication Plugin”。這個選項在MySQL5.6.6新增。
該選項的值影響服務操作的幾個方面:1)對于沒有明確指名插件,決定哪個插件分配到新用戶。2)在啟動時設置系統變量 old_passwords 的值和默認插件所需的密碼散列格式發生沖突。這結果影響 PASSWORD() 函數使用的密碼散列方法。3)下面任何創建新賬號的語句,服務器將使用默認驗證插關聯帳戶和分配指定的密碼給帳戶,該哈希值是old_passwords的值。CREATE USER ... IDENTIFIED BY 'cleartext password';
GRANT ...? IDENTIFIED BY 'cleartext password';
?4)下面任何創建新賬號的語句,如果沒有加密的密碼哈希值用于要求hash 格式的默認身份認證插件,該語句執行將失敗。CREATE USER ... IDENTIFIED BY 'encrypted password'; GRANT ...? IDENTIFIED BY 'encrypted password';
注意:如果你使用該選項修改默認身份認證方法而不是mysql_native_password,MySQL5.6.6之前版本的客戶端不能連接。因為它們不明白身份認證協議的改變。
--default-storage-engine=type
表設置默認存儲引擎,自從MySQL5.6.3,該選項僅為永久的表設置為默認存儲引擎。為了臨時表設置存儲引擎,設置系統變量default_tmp_storage_engine。
--default-time-zone=timezone
設置服務默認的時區, 這選項設置全局系統變量 time_zone,如果該選項沒有指定,默認時區和系統時區(系統變量system_time_zone指定的值)是一樣的。
--delay-key-write[={OFF|ON|ALL}]
指定如何使用延遲鍵的寫入,鍵延遲寫引起鍵緩存在對MyISAM表寫入期間不能沖洗。OFF禁用延遲鍵寫入。ON 能夠對表創建時指定了 DELAY_KEY_WRITE選項 可以使用延遲鍵寫。ALL對所有MyISAM表延遲鍵寫。見Section 8.11.2, “Tuning Server Parameters” 和 Section 14.3.1, “MyISAM Startup Options”
--des-key-file=file_name
從這兒文件讀默認DES密鑰。這些密鑰是使用 DES_ENCRYPT() 和 DES_DECRYPT() 函數。
--enable-named-pipe
支持命名管道。該選項只用在Windows。
--engine-condition-pushdown={ON|OFF}
以前,這個選項設置系統變量engine_condition_pushdown;該選項和變量從MySQL5.6.1移除。更多信息,見Section 8.13.3, “Engine Condition Pushdown Optimization”.
--event-scheduler[=value]
啟用或禁用 事件調度器。詳細信息,見The --event-scheduler Option.
--exit-info[=flags]
這是不同標示的位屏蔽,你可以用于調試 mysqld服務。不要使用這個選項,除非你知道它究竟是什么了!
--external-locking
啟用外部鎖(操作系統鎖),MySQL4.0默認禁用它。請注意,如果你在系統不完全lockd工作(比如Linux)使用這個選項,很容易使mysqld死鎖。外部鎖只影響MyISAM表訪問。要了解更多信息,包括在什么條件下,它可以和不能使用見 Section 8.10.5, “External Locking”。
--flush
在每個SQL語句之后,沖洗(同步)所有更改到磁盤。通常,MySQL把所有變化寫入到磁盤是通過操作系統處理同步到磁盤。
--gdb
為信號情報(SIGINT)安裝中斷處理(需要用^C停止 mysqld 來設置斷點)和禁用堆棧跟蹤和核心文件處理。見 MySQL Internals: Porting to Other Systems
--general-log[={0|1}]
?指定初始化通用日志的狀態。沒有值或1表示啟用 --general-log。默認是禁用的
--ignore-db-dir=dir_name
這個選項告訴服務器忽略 SHOW DATABASES 或 INFORMATION_SCHEMA 表的給定目錄名稱。
例如,如果一個MySQL編譯數據目錄在unix的根目錄,系統也許創建一個 lost+found目錄,服務應該忽略這個目錄,在服務啟動使用 --ignore-db-dir=lost+found 可以忽略把lost+found當做數據目錄。如果指定多個目錄,使用該選項多次。如果指定空值,重置該列表為空。該選項在MySQL5.6.3新增
--init-file=file_name
在啟動時從這個文件讀取SQL語句。每個語句必須在一行,不包括注釋。
--innodb-xxx
為Innodb存儲引擎設置選項。Innodb選項列表見 Section 14.2.6, “InnoDB Startup Options and System Variables”.
--install [service_name]
(僅用于Windows)安裝MySQL做windows 服務。在windows啟動,服務自動啟動。默認名稱為MySQL
--install-manual [service_name]
(僅用于windows)安裝MySQL作為Windows服務,但必須手動啟動,在windows啟動時,它不能自動啟動。如果沒有指定服務名稱,默認是MySQL。更多信息,見 Section 2.3.4.8, “Starting MySQL as a Windows Service”.
--language=lang_name, -L lang_name
用于錯誤信息的語言,lang_name可以是語言的名稱,也可以是語言文件安裝的全路徑名。該選項在MySQL5.6.1被棄用了,在MySQL5.6, 使用--lc-messages-dir 和 --lc-messages代替 --language 見Section 10.2, “Setting the Error Message Language”.
--large-pages
一些硬件/圖形化操作系統支持內存頁大于默認值(4KB)。這種支持的實際生效取決于底層硬件和操作系統。,執行大量的內存訪問的應用程序可能通過使用大頁面獲得性能改進,由于減少了翻譯后備緩沖區(TLB)失效。
MySQL 5.6支持Linux實現的大頁(這被稱為Linux中HugeTLB)見Section 8.11.4.2, “Enabling Large Page Support”。對于Solaris支持的大頁見 --super-large-pages的選項的描述。--large-pages默認被禁用
--lc-messages=locale_name
用于錯誤信息的位置,服務器轉換參數成為語言名稱并且和--lc-messages-dir的值結合產生錯誤信息文件的位置。見Section 10.2, “Setting the Error Message Language”.
--lc-messages-dir=path
錯誤信息位于的目錄。這個值是和--lc-messages一起使用為錯誤信息文件產生位置。
--log[=file_name], -l [file_name]
該選項從MySQL5.6.1移除(系統變量log也被移除),用--general_log選項來啟用通用日志,和用 --general_log_file=file_name選項設置通用日志名稱
--log-error[=file_name]
記錄錯誤和啟動信息到這個文件,默認使用host_name.err
--log-isam[=file_name]
記錄所有MyISAM改變到這個文件(僅用調試)
--log-output=value,...
這個選項決定了一般查詢日志和慢速查詢日志輸出的方向。選項值可以給定 TABLE, FILE, 或 NONE的其中一個或多個。TABLE選擇記錄到mysql數據庫中general_log和slow_log 表。 FILE 選擇記錄到一個文件中。NONE禁用日志記錄。如果NONE出現在選項值,它優先于任何其他的值。 TABLE 和 FILE都可以給,選擇使用兩種方法。這個選項選擇日志輸出的方向,但不決定日志輸出。為此,可以使用 --general_log_file和 --slow_query_log選項。
--log-queries-not-using-indexes
如果使用該選項啟動慢日志,預計將檢索所有行的查詢被記錄慢日志。這個選項并不意味著沒有使用索引。例如,一個查詢,它使用全索引掃描但會記錄慢日志,因為該索引不會限制行數。
--log-raw
自從MySQL 5.6.3,包含密碼的某些語句被服務不按照原句重寫到通用日志,慢日志,二進制日志。如果服務啟動使用該選項,密碼重寫可能被一般查詢日志阻止。這個選項可以用于診斷,看到服務器接收的確切的文本的語句,但是出于安全原因不適合生產使用。在MySQL5.6.3,語句中的密碼不重寫和一般的查詢日志應該受到保護。這個選項在 MySQL 5.6.3新增。
--log-short-format
記錄少量信息到二進制日志和慢速查詢日志,如果他們已經被激活。
--log-slow-admin-statements
慢的管理語句寫入慢查詢日志,管理語句包括ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX,DROP INDEX, OPTIMIZE TABLE, 和 REPAIR TABLE.
--log-tc=file_name
內存映射的事務協調日志文件名(當二進制日志被禁用,XA事務影響多個存儲引擎)。默認的名字是 tc.log。這個文件是在數據目錄下創建如果沒有給出一個完整的路徑名。目前,這個選項是未使用的。
?--log-tc-size=size
內存映射的事務協日志的大小(字節),默認是24kB
--log-warnings[=level], -W [level]
打印如 Aborted connection... 警告信息到錯誤日志。推薦啟用該選項。例如,如果使用復制(你得到更多的信息關于正在發生的事情,如網絡故障和重連接信息)。這個選項是默認啟用的(1),如果省略默認級別值是1。
禁用此選項,使用 --log-warnings=0。如果該值大于1,連接中斷被寫入錯誤日志,和為新連接嘗試拒絕訪問錯誤也寫入錯誤日志。
如果一個從服務器啟動時啟用 --log-warnings,從服務打印消息到錯誤日志,提供有關其狀態,如它開始工作的,它被切換到另一個中繼日志,斷開后它重新連接的二進制日志和中繼日志坐標,等等。服務器記錄基于語句日志卻不安全的語句信息,只有啟用 --log-warnings。
--low-priority-updates
指定表更新操作 (INSERT, REPLACE, DELETE, UPDATE)的權限小于所有查詢操作,這也可以使用 {INSERT | REPLACE | DELETE | UPDATE} LOW_PRIORITY ...的權限僅小于一個查詢。或通過 SET LOW_PRIORITY_UPDATES=1在一個線程改變權限。這僅影響于只是用表級鎖的引擎。見 Section 8.10.2, “Table Locking Issues”.
--min-examined-row-limit=number
當此選項設置、查詢檢查的行數少于number行的慢查詢不寫入慢查詢日志。缺省值是0
?--memlock
鎖定mysqld的進程在內存。如果你有一個問題,操作系統導致mysqld交換到磁盤,這個選項可以防止被交換磁盤。
?--myisam-block-size=N
用于MyISAM索引頁的塊大小
--myisam-recover-options[=option[,option]...]]
設置MyISAM存儲引擎恢復模式,這選項的值可以為 OFF, DEFAULT, BACKUP, FORCE, 或 QUICK任意組合,如果你指定多個值,之間用逗號分開。指定選項沒有參數和指定默認是一樣的,用 "" 指定該選項,不啟用恢復(和值為OFF一樣)。如果啟動恢復, mysqld 每次打開MyISAM 表,它檢查表是否標記為崩潰或沒有正常關閉。(quick只在運行時禁用外部鎖才有效。)如果是這種情況,mysqld運行檢查表。如果表被損壞,mysqld試圖修復它。
OFF:不恢復,DEFAULT:沒有backup,forcing,或quick checking進行恢復,BACKUP:在恢復過程中,數據文件被修改,保存table.MYD的一份備份為 tbl_name-datetime.BAK。FORCE:盡管從.MYD有數據丟失,還可以運行恢復。QUICK:如果沒有任何刪除塊,不檢查表中的行。
在服務自動修復表之前,它寫一條有關修復的提示到錯誤日志。如果你希望能夠恢復大多數問題無需用戶干預,你應該使用 BACKUP,FORCE的選項。盡管有些行將被刪除,會強制對表恢復。但它保留舊的數據文件作為備份,以便以后檢查發生了什么事。 見Section 14.3.1, “MyISAM Startup Options”。
--old-alter-table
當這個選項被指定,服務器不使用已優化的方法來處理 ALTER TABLE 操作,它恢復使用臨時表,復制數據,然后重命名臨時表為原來的表名。使用MySQL 5.0和更早。 ALTER TABLE的更多信息見 Section 13.1.6, “ALTER TABLE Syntax”.
--old-style-user-limits
啟用舊式用戶限制。(在MySQL5.0.3,用戶資源限制是分別計算每臺主機的用戶連接而不是user表的每個賬戶的行。)
--one-thread
該選項從MySQL 5.6.1移除了,使用 --thread_handling=no-threads 代替。
--open-files-limit=count
可用于mysqld修改文件句柄數,如果mysqld給出錯誤:Too many open files。你應該增大該變量的值。mysqld使用選項值通過setrlimit() 預訂文件句柄數。如果所請求的文件句柄數量不能被分配,mysqld寫一個警告到錯誤日志。 mysqld可能試圖分配超過請求的數量的句柄數(如果他們是可用的),使用max_connections 和 table_open_cache值估計是否需要更多的句柄數。在unix,該值不能少于ulimit -n
--partition[=value]
在MySQL支持啟用或不啟用用戶自定義的分區
--pid-file=path
進程ID文件的路徑。
--plugin-xxx
指定一個屬于服務插件的選項,例如,許多存儲引擎可用插件來構建,并且這樣的引擎,該插件的選項可以用 --plugin 前綴指定。如為Innodb指定的選項--innodb_file_per_table ,可以用 --plugin-innodb_file_per_table來指定。對選項為布爾型的,可以使用, --skip-plugin-innodb_file_per_table禁用innodb_file_per_table。
--plugin-load=plugin_list
這個選項告訴服務器在啟動時,加載指定的插件。這選項的值是用分號分隔的name=plugin_library對的列表。每個name 就是插件的名稱。例如:hell> mysqld --plugin-load="myplug1=myplug1.so;myplug2=myplug2.so"。如果有多行 --plugin-load 選項,只有最后一個有效,另外使用 --plugin-load-add選項指定的插件可以被加載。在正常啟動,服務決定哪些插件被加載,通過讀系統表mysql.plugins 。如果服務指定 --skip-grant-tables選項啟動,它不請教mysql.plugins表和不加載插件,指定 --plugin-load 選項在指定--skip-grant-tables下可以加載插件。
--plugin-load-add=plugin_list
這個選項補充 --plugin-load 選項 --plugin-load-add添加插件和一組插件在啟動時加載。參數格式和 --plugin-load是一樣 --plugin-load-add可以用來避免指定一組很多的插件作為 --plugin-load 單個參數。這個選項被添加在MySQL 5.6.3。--plugin-load-add 可以出現在沒有 --plugin-load,但任何--plugin-load-add出現在 --plugin-load的實例沒有生效,因為 --plugin-load重置一組插件被加載。換句話說,這些選項: --plugin-load=x --plugin-load-add=y 是等效于--plugin-load="x;y"。但--plugin-load-add=y --plugin-load=x 只等效于--plugin-load=x。有關插件加載更多信息 見 Section 5.1.8.1, “Installing and Uninstalling Plugins”.
--port=port_num, -P port_num
當監聽TCP/IP連接的端口,端口必須大于1024,除非服務是以系統用戶root啟動。
--port-open-timeout=num
在一些系統中,服務器停止時,TCP /IP端口可能不會立即變得可用。如果服務器之后迅速重啟,其試圖重新打開端口可能會失敗。這個選項顯示服務器應該等待TCP/ IP端口成為免費的時間(秒),如果它不打開。默認是不等待。
--remove [service_name]
(僅Windows)刪除一個MySQL Windows服務。如果沒有指定服務名稱,服務默認的名字是MySQL。有關更多信息,見Section 2.3.4.8, “Starting MySQL as a Windows Service”。
--safe-mode
跳過一些優化階段。這個選項從MySQL 5.6.6被移除了。
--safe-user-create
如果該選項被啟用,你不能使用 GRANT語句創建新的MySQL用戶,除非該用戶對mysql.user表和這個表任何列都有 INSERT權限。如果你想要一個用戶有能力創建新用戶,這用戶有正確權限可以授予其他用戶,你應該授予用戶的以下權限:GRANT INSERT(user) ON mysql.user TO'user_name'@'host_name'; 這可以確保用戶無法直接改變列的任何特權,但必須使用GRANT語句給其他用戶授權。
--secure-auth
這選項引起服務阻塞那些密碼是以舊格式(4.1之前)存儲的用戶的連接。使用它來阻止所有采用舊格式的密碼(因網絡的不安全通信)。在MySQL5.6.5之前,該選項默認禁用,自從MySQL5.6.5,默認啟用。可以用 --skip-secure-auth禁用。
--secure-file-priv=path
這個選項限制了 LOAD_FILE() 函數的效果,并且 LOAD DATA和 SELECT ... INTO OUTFILE語句僅在文件存在該指定的目錄下才有效。
--shared-memory
本地連接啟用共享內存連接。這個選項只在Windows可用。
--shared-memory-base-name=name
對于共享內存連接的共享內存名稱。這個選項只在Windows可用。默認的名字是MYSQL。名字是大小寫敏感的。
--skip-concurrent-insert
關閉在MyISAM表同時查詢和插入的操作。(這選項只使用在如果你認為你在這個特性已經找到了一個錯誤)見Section 8.10.3, “Concurrent Inserts”.
--skip-external-locking
不使用外部鎖(系統鎖)。這影響MyISAM表的訪問。更多信息,包含在什么條件,它不可用,見Section 8.10.5, “External Locking”.
--skip-event-scheduler
關閉事件調度器,這和禁用事件調度器是不同的。那需要設置--event-scheduler=DISABLED 詳細信息見 The --event-scheduler Option
--skip-grant-tables
這個選項會導致服務器啟動不使用特權系統,這允許任何人訪問服務,不受限制訪問所有數據庫。你可以通過從系統命名行執行 mysqladmin flush-privileges或 mysqladmin reload命令導致一個正運行的服務再次開始使用權限表,或連接到服務器通過發行一個MySQL的 FLUSH PRIVILEGES語句。這個選項也會抑制加載那些使用INSTALL PLUGIN 語句安裝的插件,,用戶定義函數(udf),和事件調度器。為了要加載插件,使用 --plugin-load選項。注意, 在啟動后,通過執行其他操作,FLUSH PRIVILEGES 可能被隱式。例如, mysql_upgrade在升級過程中刷新權限表。
--skip-host-cache
為加快主機名到IP解析禁用使用內部主機緩存。在這種情況,每次客戶連接,服務器執行DNS查找。見 Section 8.11.5.2, “DNS Lookup Optimization and the Host Cache”。使用? --skip-host-cache類似設置系統變量host_cache_size的值為0,但host_cache_size更加靈活,因為在運行時它也可以調整大小、啟用或禁用主機緩存,不只是在服務器啟動事。如果使用 --skip-host-cache啟動服務,它不能阻止host_cache_size的改變,但這些改變不生效和緩存是不可用,盡管host_cache_size設置大于0。
--skip-innodb
禁用Innodb存儲引擎。在這情況,由于默認引擎是Innodb,服務將不能啟動除非你也使用 --default-storage-engine和 --default-tmp-storage-engine為永久表和臨時表設置默認的存儲引擎。
--skip-name-resolve
當檢測客戶端連接,不解析主機名,僅使用IP地址,如果你使用此選項,在授權表所有host列必須是IP地址或localhost.見 Section 8.11.5.2, “DNS Lookup Optimization and the Host Cache”
--skip-networking
不監聽TCP/IP連接,所有與 mysqld交互必須使用命名管道或共享存儲區(在windows)或unix 套接文件(在unix)。這個選項是高度推薦當只允許本地客戶連接。見 Section 8.11.5.2, “DNS Lookup Optimization and the Host Cache”
--skip-partition
禁止用戶自定義的分區。已分區表可以使用 SHOW TABLES或查詢INFORMATION_SCHEMA.TABLES表查看,但不能被創建或更改,在那表的數據也不能被訪問。所有分區指定的列在 INFORMATION_SCHEMA.PARTITIONS顯示為NULL。既然DROP TABLE移除表的定義(.frm)文件,當這語句操作已分區表(使用該選項不能再分區),在這種情況下,該語句不能刪除與分區表相關的.par文件。由此原因,為避免刪除分區表,可以使用此選項。
--ssl*
以ssl開頭的選項指定是否允許客戶端使用ssl連接和顯示ssl密鑰和證書在哪 見 Section 6.3.9.4, “SSL Command Options”。
--standalone
僅在windows可用,指示MySQL服務器不作為一個服務來運行
--super-large-pages
在MySQL標準使用大頁面試圖使用支持最大尺寸為4 MB。在Solaris上,一個“超級大頁面”功能允許使用256 MB的頁面。這個功能可用于最近SPARC平臺。它可以啟用或禁用通過使用 --super-large-pages 或 --skip-super-large-pages選項。
--symbolic-links, --skip-symbolic-links
啟用和禁止符號鏈接。在windows和unix有不同的影響。在windows,啟用符號鏈接可以讓你通過創建 包含數據庫實際路徑的db_name.sym文件建立一個符號鏈接。見 Section 8.11.3.1.3, “Using Symbolic Links for Databases on Windows”.在unix,啟用符號鏈接意味著:你可以使用 CREATE TABLE語句的INDEX DIRECTORYor DATA DIRECTORY的選項鏈接一個MyISAM 索引文件或數據文件到另一個目錄。如果你刪除或重命名表,其符號鏈接指向的文件也會被刪除或重命名。見Section 8.11.3.1.2, “Using Symbolic Links for MyISAM Tables on Unix”
--skip-show-database
該選項設置系統變量 skip_show_database來控制是否允許使用 SHOW DATABASES 語句。見 Section 5.1.4, “Server System Variables”.
--skip-stack-trace
不寫堆棧跟蹤。這個選項是有用的,當你在一個調試下運行mysqld。在某些系統上,您也必須使用這個選項來獲得一個核心文件。見 MySQL Internals: Porting to Other Systems.
--skip-thread-priority
為更快的響應時間禁用使用線程優先級。這個選項是未使用的和在MySQL 5.6.1被移除了。
--slow-query-log[={0|1}]
指定慢速查詢日志的初始狀態。沒有參數或參數為1 --slow-query-log 選項允許日志。如果省略或指定該參數為0,則選項禁用日志。
--slow-start-timeout=timeout
?這個選項控制了Windows服務控制管理器的服務啟動超時。這個值是服務控制管理器在啟動windows服務期間試圖殺死windows服務等待最大的毫秒數。默認值為15000(15秒)。如果MySQL服務啟動花費的時間太長,您可能需要增加這個值。值0表示沒有超時。
--socket=path
在Unix上,這個選項指定了Unix socket文件被用于監聽本地連接。默認值為/tmp/ mysql.sock。如果這個選項被指定,服務器在數據目錄創建文件,除非指定的絕對路徑名稱是一個不同的目錄。在Windows上,這個選項指定管道的名字用于監聽本地連接,使用一個命名管道。默認值是MySQL(不區分大小寫)。
--sql-mode=value[,value[,value...]]
設置SQL模式,在MySQL5.6.6之前,默認是''(空字符串);從MySQL5.6.6開始,默認是NO_ENGINE_SUBSTITUTION。見 Section 5.1.7, “Server SQL Modes”.
--sysdate-is-now
SYSDATE()默認返回它執行的時間,而不是該語句發生開始執行的時間。它不同于NOW()的行為。該選項使SYSDATE()成為NOW()的別名。對于二進制日志記錄和復制的影響的信息,參照 Section 12.7, “Date and Time Functions”中 SYSDATE()的描述,和在 Section 5.1.4, “Server System Variables”對? SET TIMESTAMP 的設置。
--tc-heuristic-recover={COMMIT|ROLLBACK}
在啟發式恢復過程決定使用的類型。目前,這個選項是未使用的。
?--temp-pool
這個選項會使服務器創建的大多數臨時文件使用一個小組名稱,而不是每個新文件使用一個唯一的名稱。這個克服在Linux內核處理創造許多不同名稱的新文件一個問題。對舊的行為,Linux似乎“泄漏”內存,因為它是被分配給目錄條目緩存而不是磁盤緩存。忽略該選項除了Linux。
?--transaction-isolation=level
設置默認事務隔離級別。在運行時,可以使用 SET TRANSACTION 或系統變量 tx_isolation 設置隔離級別
--transaction-read-only
設置默認事務訪問模式 ,默認情況,read-only模式是禁用,所以這個模式是讀或寫。在運行時,設置默認事務訪問模式,使用 set transaction 語句或設置系統變量tx_read_only 。這選項在MySQL5.6.5新增的。
--tmpdir=path, -t path
用于創建臨時文件的目錄路徑
--user={user_name|user_id}, -u {user_name|user_id}
--verbose, -v
詳細信息
--version -V
顯示版本信息并退出。
#####performace schema Command Options
?
[MyISAM]
--myisam-recover-options=mode
設置崩潰的MyISAM表自動恢復模式,詳細見上面。
--delay-key-write=ALL
在對任何MyISAM表期間,不沖洗鍵緩存。詳細見上面。
bulk_insert_buffer_size
用于批量插入優化的緩存大小(每個線程)。
myisam_max_sort_file_size
當創建MyISAM索引(REPAIR TABLE, ALTER TABLE, or LOAD DATA INFILE期間),MySQL允許臨時文件最大值。如果文件大小大于這個值,創建索引的使用鍵緩存代替,這是較慢的。單位字節。
myisam_sort_buffer_size
用于恢復表的緩存大小。如果使用 --myisam-recover-options選項啟動mysqld,那激活自動恢復。在這種情況下,當服務器打開一個MyISAM表,它檢查表是否被標記為崩潰或是否為表打開計數器,變量不是0,您正在運行的服務器禁用外部鎖。若這些條件其中之一是正確的,就會發生以下情況:1)檢查表錯誤。2)如果發現錯誤,嘗試做一個快速表修復(整理但沒有重建數據文件)3)因數據文件有錯誤,修復失敗(如,一個重復主鍵錯誤),這次服務重建數據文件。4)如果修復失敗,服務器嘗試再一次用舊的修復選項的方法(逐行寫入,不用整理)。這個方法應該能修理任何類型的錯誤和需要少量磁盤空間。如果從先前完全表不能全表恢復并且在 --myisam-recover-options 選項沒有指定FORCE,自動修復中止并在錯誤日志生產一條錯誤消息:Error: Couldn't repair table: test.g00pages。
#Performance Schema Command Options
--performance-schema-consumer-consumer_name=value
?配置一個性能模式的消費者。消費者的名字在setup_consumers 表使用下劃線,但對于消費者在啟動時設置,破折號,破折號,和下劃線是等價的。
--performance-schema-instrument=instrument_name=value
配置一個性能模式儀器。該名稱可以是作為一個模式來匹配配置儀器。
[Innodb]
##options
?--ignore-builtin-innodb
在MySQL5.1,該選項引起服務的行為好像內置Innodb不存在。它啟用Innodb Plugin 代替。在MySQL5.6,InnoDB是默認存儲引擎并且InnoDB Plugin不被使用,所以該選項沒作用,自從MySQL5.6.5,它被忽略。
--innodb[=value]
控制是否加載Innodb引擎。如果服務編譯支持InnoDB引擎,那么該選項有三種值 OFF, ON, 或 FORCE 見Section 5.1.8.1, “Installing and Uninstalling Plugins”。 禁用Innodb 使用 --innodb=OFF 或 --skip-innodb。在這種情況,Innodb為默認引擎,這樣服務不能啟動除非使用 --default-storage-engine和tmp-storage-engine 來設置默認的持久和臨時表的引擎。
--innodb-status-file={OFF|ON}
控制Innodb是否在數據目錄創建一個名為 innodb_status.pid文件。如果啟用,InnoDB優先把 SHOW ENGINE INNODB STATUS 的結果寫到這個文件。默認情況,不創建這個文件,如果要創建,可用--innodb-status-file=1啟動 mysqld。這個文件在服務被關閉時被刪除。
--skip-innodb
禁用InnoDB引擎。
##system variables
daemon_memcached_enable_binlog
該變量詳細用法見Section 14.2.9, “InnoDB Integration with memcached”,在MySQL5.6.6新增的。
daemon_memcached_engine_lib_name
指定實現InnoDB memcached 插件的共享庫。該變量詳細用法見Section 14.2.9, “InnoDB Integration with memcached”,在MySQL5.6.6新增的。
daemon_memcached_engine_lib_path
包含實現InnoDB memcached 插件的共享庫的目錄路徑,該變量詳細用法見Section 14.2.9, “InnoDB Integration with memcached”。
daemon_memcached_option
在初始化,用空格分隔的選項被傳到底層 memcached守護進程。
daemon_memcached_r_batch_size
在執行COMMIT來開啟新的事務之前,指定多少次memcached 讀操作(get)。該值默認為1,所以任何通過SQL語句更改表對memcached操作來說是立即可見的。你可能會增加該值來減少只通過memcached接口訪問系統底層表的頻繁提交的開銷。如果您設置的值太大,大量undo或redo數據可以增加一些存儲開銷,與長運行的事務有關。該變量詳細用法見Section 14.2.9, “InnoDB Integration with memcached”,在MySQL5.6.6新增的。
daemon_memcached_w_batch_size
在執行COMMIT來開啟新的事務之前,指定多少次memcached 寫操作,如 add, set, 或 incr。和daemon_memcached_r_batch_size對應。 該值默認為1,假設任何數據存儲是需要重要保護以防停機并且應立即提交;當存儲是非關鍵數據,您可能會增加這個值來減少頻繁提交的開銷;然后在出現崩潰時,最后的N-1未提交的寫操作可能會丟失。
innodb_adaptive_flushing
指定是否基于工作負載動態調整涮洗InnoDB中 buffer pool的臟頁比例。動態調整涮洗比例是為了避免爆發性的I/O活動。默認情況下啟用的。
innodb_adaptive_flushing_lwm
在 adaptive flushing啟用時,低水平標志代表redo log 容量的百分比。這個變量默認10,范圍0...70,在5.6.6新增的。
innodb_adaptive_hash_index
是否啟用Innodb的自適應哈希索引。自適應哈希索引功能對于某些工作負載是有用的,也對其他有不好的。啟用和禁用來對實際的工作負載進行基準。默認是啟用的。在服務啟動時可用--skip-innodb_adaptive_hash_index來禁用。
innodb_adaptive_max_sleep_delay
按照工作負載,允許Innodb自動調整 innodb_thread_sleep_delay 啟動和關閉的值。任何非零值能夠自動化,動態調整innodb_thread_sleep_delay 值。該值小于innodb_adaptive_max_sleep_delay選項指定的最大值。這值為微秒數。在繁忙,大于16Innodb線程的系統下,該選項非常有用。(實際上,它是最有價值的是在MySQL系統有上千個并發連接時。)該變量在5.6.3新增。
innodb_additional_mem_pool_size
Innodb 用于存儲數據字典信息和其他內部數據結構的內存池大小。在應用中表越多,分配內存就越多。如果該內存用完,它開始從操作系統分配內存并寫警告信息到錯誤日志。默認是8M。
自從MySQL 5.6.3, innodb_additional_mem_pool_size被棄用,在之后系列應該會刪除。
innodb_api_bk_commit_interval
指定使用InnoDB memcached接口多少次自動提交空閑的連接。該項在5.6.7新增,用法請見Section 14.2.9, “InnoDB Integration with memcached”
?innodb_api_disable_rowlock
?對于這個選項詳細用法見:Section 14.2.9, “InnoDB Integration with memcached”
?innodb_api_enable_binlog
使用Innodb memcached plugin時,可以使用 binary log。對這個選項詳細用法見 Section 14.2.9, “InnoDB Integration with memcached”
innodb_api_enable_mdl
Innodb memcached 插件鎖表時,不能通過SQL接口刪除表和使用DDL更新表。
innodb_api_trx_level
控制通過memcached 接口處理查詢的事務隔離級別。對于這個選項的常量對應到熟悉名稱有0 = READ UNCOMMITTED,1 = READ COMMITTED,2 = REPEATABLE READ,3 = SERIALIZABLE。
innodb_autoextend_increment
當自動擴展系統表空間文件滿了,自動擴展的大小(MB),自從MySQL5.6.6的值默認是64,之前都是8M。這個變量不影響每個表空間文件的大小,如果你使用 innodb_file_per_table=1。這些文件自動擴展不考慮innodb_autoextend_increment的值。最初擴展是少量的,之后以4MB擴展。
innodb_autoinc_lock_mode
用于自動生成 auto-increment鎖模式。允許的值是 0, 1, 或 2,對應著鎖模式 “traditional”,“consecutive”,或“interleaved”。 對這些模式詳細描述見 Section 5.4.4, “AUTO_INCREMENT Handling in InnoDB”。
innodb_buffer_pool_dump_at_shutdown
當MySQL 服務被關閉,是否記錄下在buffer pool中的緩存頁。用于下次啟動時減少熱身時間。典型的結合innodb_buffer_pool_load_at_startup一起使用。
innodb_buffer_pool_dump_now
啟用該選項,立即記錄下buffer pool中的緩存頁。經典結合innodb_buffer_pool_load_now一起使用。在5.6.3新增的。
innodb_buffer_pool_filename
指定文件存儲innodb_buffer_pool_dump_at_shutdown 或 innodb_buffer_pool_dump_now產生頁碼列表。
innodb_buffer_pool_instances
?InnoDB的buffer pool被分成多個區段,對系統有多個G范圍,將緩沖池分到單獨的實例來提高并發性。通過減少不同的線程讀取和寫入到緩存頁面的爭用。被存儲到buffer pool或從buffer pool讀取的每個頁使用哈希函數隨機分配給其中一個緩沖池實例。每個緩存池實例管理它的空閑頁列表, flush lists, LRUs,和其他連接到緩存池的數據結構。通過各自buffer pool mutex來保護。當你設置? innodb_buffer_pool_size大于1G,該選項才有效,把總大小分配給所有緩存池。更有效的,指定innodb_buffer_pool_size 和 innodb_buffer_pool_size一個組合,以便每個緩沖池實例至少1GB。在MySQL5.6.6之前版本,默認為1,自從MySQL5.6.6 默認是8。除了在windows 32位系統上,默認值取決于 innodb_buffer_pool_size的值。如果 innodb_buffer_pool_size大于1.3GB,默認 innodb_buffer_pool_instances的默認值是innodb_buffer_pool_size/128MB。否則,默認是1.
innodb_buffer_pool_load_abort
由于 innodb_buffer_pool_load_at_startup 或 innodb_buffer_pool_load_now的觸發,中止處理修復Innodb buffer pool的內容。
innodb_buffer_pool_load_at_startup
指定這個,在服務啟動時,
sync_binlog。通過加載在關閉時buffer pool中的頁來給buffer pool 熱身。經典的是結合innodb_buffer_pool_dump_at_shutdown一起使用。
innodb_buffer_pool_load_now
通過加載一組數據頁立即buffer pool 熱身,不需等待服務重啟。在基準測試期間,或在運行查詢報告或維護之后準備恢復MySQL服務器為正常工作負載,通過把緩存恢復到已知狀態是非常有效的。
innodb_buffer_pool_size
buffer pool的大小,如果大于1G,設置 innodb_buffer_pool_instances大于1的值,改善繁忙的服務的可伸縮性。
innodb_change_buffer_max_size
Innodb change buffer的最大的大小。是整個buffer pool大小的百分比。對于高插入、更新和刪除活動的服務,應該增大該值。對于普通I/O調優建議,見 Section 8.5.7, “Optimizing InnoDB Disk I/O”。該變量在MySQL5.6.2新增
innodb_change_buffering
Innodb是否執行 change buffering,這是一種優化,通過對二級索引延遲寫以便 I/O操作可以順序地執行。允許值有inserts (緩存插入操作),deletes(緩存刪除操作;嚴格說,這個寫是給索引記錄作標志,為在清洗期間做刪除操作), changes(緩存插入和標志為刪除的操作),purges(緩存 purge 操作,當被刪除索引條目已經刪除到垃圾收集才寫),all(緩存插入,刪除,purge 操作)和none(不緩存任何操作)。默認是ALL。詳細見Section 14.2.4.2.13, “Controlling InnoDB Change Buffering”。
innodb_checksum_algorithm
指定對每個InnoDB表空間的存儲每個磁盤塊如何生成和驗證校驗碼。取代了 innodb_checksums選項。這個值為innodb,對MySQL所有版本向后兼容。crc32計算更改塊校驗和為每個磁盤讀取檢查校驗和是最快一種算法。none是在校驗和域寫一個常量,而不是基于塊數據計算一個值。在表空間的塊可能用一個混合的值,有舊的,新的,和沒有檢驗和,隨數據修改逐漸更新該值;在一個表空間一旦任何被修改塊使用crc32算法,早期版本的MySQL不能讀關聯的表的檢驗和。該選項在MySQL5.6.6的默認值從innodb改為crc32。但為改善InnoDB數據文件在MySQL早期版本兼容性,在5.6.7切換回innodb。值為strict_*格式的原理和innodb,crc32,和none是一樣的。除了在相同的表空間中碰到一個混合的校驗和值,InnoDB停止之外。,你使用這些值僅在全新的實例,對所有表首次設置這個選項。設置strinct_*多少會更快點。因為在磁盤讀取期間,不需要計算新的,舊的校驗和值,因為它們新舊值都可以接受。對用法信息見 Section 14.2.4.2.7, “Fast CRC32 Checksum Algorithm”。
innodb_checksums
InnoDB可以用 檢驗和檢驗從磁盤讀取表空間所有頁,確保發生在硬件故障或損壞的數據文件的額外錯誤。這個驗證是默認啟用。在某些特殊情況下(如在運行基準測試)這種額外的安全功能可以用 --skip-innodb-checksums來禁用。你可以用innodb_checksum_algorithm選項指定計算檢驗和方法。自從MySQL5.6.3該選項被棄用了。
innodb_cmp_per_index_enabled
在 INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX表啟用每個索引壓縮相關統計信息。由于這些信息收集花銷很大,在涉及對InnoDB壓縮表性能調優期間,該選項僅在開發,測試,從服務實例啟用。
innodb_commit_concurrency
可以同時提交 線程數。默認是0,允許任意數量的事務同時提交。在運行時,該值不能從0修改成非0值,反之也一樣。但非0值之間修改是可以的。
innodb_compression_failure_threshold_pct
MySQL開始在 compressed頁內添加填充設置分界點來避免昂貴的壓縮失敗。 值為0禁用監控壓縮效率和動態調整填充量的機制。
innodb_compression_level
給InnoDB 壓縮表和索引指定zlib 壓縮的等級。
innodb_compression_pad_pct_max
在每個壓縮頁,預留最大百分比作為空閑的空間。當一個壓縮的表或索引更新和數據可能被重新壓縮,在頁面內使用該空間重組數據和修改日志。當 innodb_compression_failure_threshold_pct設置非0,和壓縮失敗率超過分界點,才運用該選項。
innodb_concurrency_tickets
決定進入InnoDB并發的線程數。如果線程的數量已經達到了并發限制,當它試圖進入InnoDB內核,線程被放置在一個隊列中。自從MySQL5.6.6,默認值為 5000,之前版本是500。
innodb_data_file_path
InnoDB 的數據文件的路徑和大小。每個數據文件全路徑連接 innodb_data_home_dir指定目錄路徑。
innodb_data_home_dir
在系統表空間,所有InnoDB 數據文件部分通用路徑。這個選項不影響file_per_table的文件位置,默認是MySQL 數據目錄,但你可以給innodb_data_file_path指定絕對路徑。
innodb_disable_sort_file_cache
如果啟用,該變量對合并排序臨時文件禁用操作系統文件系統緩存。這個效果和打開這些文件用O_DIRECT等效的。此變量在MySQL5.6.4添加的。
innodb_doublewrite
如果這個變量啟用(默認啟用),InnoDB存儲所有數據 兩次,首先寫到 doublewrite buffer,然后到實際數據文件。對基準或需要高性能而不關心數據完整性或可能的失敗可以使用 --skip-innodb_doublewrite關閉。
innodb_fast_shutdown
InnoDB關閉模式。如果該值為0,InnoDB緩慢關閉,在關閉之前,做一個完整的清洗和插入緩沖合并。如果該值為1(默認),InnoDB在關閉時跳過這些操作,這一過程稱為快速關閉。如果該值為2,InnoDB沖洗日志和冷關閉,好像MySQL發生崩潰;提交事務不會丟失,但是崩潰恢復操作使下一次啟動需要更長的時間。
緩慢關閉可能花幾分鐘,甚至在極端情況下幾小時,大量的數據仍然被緩沖。在MySQL主版本之間升級或降級之前使用慢關閉技術,這樣所有的數據文件做充分的準備,以防升級過程更新文件格式。
在緊急或故障情況下,數據冒著被破壞風險,使用 innodb_fast_shutdown=2,獲得絕對最快關閉。
innodb_file_format
?Innodb表使用文件格式,目前,支持 Antelope和Barracuda,這個僅適用于表各自有自己表空間。所以要該選項有效,那么一定使用 innodb_file_per_table。Barracuda 文件格式對Innodb某些特性如壓縮表是必須的。
innodb_file_format_check
該變量可以設置1和0,對應著服務在啟動時,Innodb是否檢查系統表空間的文件格式標志位(如: Antelope 或 Barracuda)。如果該標志被檢查,并且比當前Innodb支持的值更高。會產生一個錯誤,并且Innodb 不能啟動。如果不高,innodb會設置 innodb_file_format_max 的值到文件標志位。注意:盡管默認值有時被顯示為ON或OFF,在您的配置文件或命令行總是用數值1或0將打開或關閉此選項。innodb_file_format_max
在服務啟動時,Innodb把這個變量的值設置給系統表空間的文件格式標志(如 Antelope 或 Barracuda)。如果服務用一個“higher”文件格式創建或打開一個表,把 innodb_file_format_max的值設置為表的標志
innodb_file_per_table
當啟用該innodb_file_per_table(在MySQL5.6.6和更高版本默認啟用該選項),InnoDB為每個新創建的表存儲在獨立 .ibd 文件,而不是系統表空間。當這樣的表被刪除或清除,存儲對這些InnoDB表回收。此設置允許其他幾個InnoDB的特性,如表壓縮。這樣的功能的詳細細節見 Section 5.4.1, “Managing InnoDB Tablespaces”。
當 innodb_file_per_table禁用,InnoDB把所有表和索引存儲到系統表空間ibdata文件。這個設置可能減少文件系統操作的性能,比如 DROP TABLE 或 TRUNCATE TABLE。它是最適合服務器環境中所有存儲設備用于MySQL數據。因為系統表空間從未縮小,所有數據庫共享在一個實例,當innodb_file_per_table=OFF避免加載大量的臨時數據到空間受限制系統。在這種情況下,建立一個單獨的實,您可以刪除整個實例來回收空間。 自從MySQL 5.6.6默認情況下啟用innodb_file_per_table,之前版本是禁用的。如果與MySQL 5.5或5.1保持兼容性,禁用它是一個值得考慮的問題。這將防止ALTER TABLE 把InnoDB 表從系統表空間表移到.ibd文件。
innodb_flush_log_at_timeout
每N秒寫和沖洗事務日志,這個選項僅當設置innodb_flush_log_at_trx_commit 為2才有效,該變量在MySQL5.6.6新增。
innodb_flush_log_at_trx_commit
該選項控制事務提交嚴格 ACID 順序性和當提交的相關I/O操作被重新安排和分批次完成來獲取可能更高的性能之間一個平衡。你可以取得更好的性能,通過改變缺省值,但在崩潰時,你可以失去一秒的事務。
默認值1,要求ACID完全順序性,在每個事務提交時,log buffer 被寫到log file和在日志文件執行沖洗到硬盤操作。
值0,任何 mysqld進程崩潰,丟失最后一秒的事務。每秒日志從buffer 寫到日志文件,并刷新到磁盤上。事務提交不會做任何事。
值2,只有操作系統崩潰或停電可丟失最后一秒的事務。每提交事務,日志緩沖區被寫入文件,但不刷新到磁盤操作。在MySQL 5.6.6之前版本,每秒一次刷新日志文件。注意,每秒一次沖洗不是100%保證每秒鐘發生,由于進程調度問題。在MySQL 5.6.6,刷新頻率由 innodb_flush_log_at_timeout代替。InnoDB的崩潰恢復工作不考慮該變量的值,事務要么完整應用要么完整刪除。在復制中使用Innodb,為最大可能持久性和一致性,在master 的配置文件設置innodb_flush_log_at_trx_commit=1 和 sync_binlog=1
innodb_flush_method
?控制調用系統刷洗數據到InnoDB 數據文件和日志文件 的方法,它影響I/O吞吐量。這個變量只與Linux或Unix系統有關,WINDOWS系統中,刷新方法使用 async_unbuffered,不能改變。
默認情況,InnnoDB 使用fsync()刷新數據和日志文件。如果 innodb_flush_method選項設置為 O_DSYNC,Innodb 使用O_SYNC來打開和刷新日志文件,并且用fsync()刷新數據文件。如果指定O_DIRECT(在一些GNU/Linux 版本, FreeBSD, 和Solaris是可用的)InnoDB使用 O_DIRECT(在 Solaris使用 directio())來打開數據文件,和使用fsync()刷新數據和日志文件。
innodb_flush_neighbors
指定從Innodb buffer pool 刷新一頁是否也涮洗在相同的段區的其他臟頁。當表數據被存儲在傳統的HDD存儲設備,在一個操作刷新那些相鄰的頁面 相比于不同時間刷新各自頁可以減少I/O開銷(主要磁盤尋道操作)。對數據存儲在SSD,尋道時間不是一個重要的因素,你可以將此設置OFF,來擴展寫操作。
innodb_flushing_avg_loops
迭代次數用于InnoDB保持沖洗狀態前計算的快照,控制如何快速響應工作負載不斷變化的自適應沖洗。增加該值使沖洗操作的頻率平穩變化,隨著工作量的變化逐漸改變。減少該值使得適應性沖洗(adaptive flushing)隨工作負載變化調整迅速,如果工作負載突然增加和減少,這可能會在涮洗操作導致峰值。這個變量在MySQL5.6.6新增。
innodb_force_load_corrupted
在啟動時讓InnoDB加載那些標記為損壞的表。只在排除故障期間用于恢復數據,否則無法訪問。當故障檢修完成后,將此設置OFF并重新啟動服務。此選項在5.6.3新增的。
innodb_force_recovery
這個崩潰恢復模式,通常只有在嚴重的故障排除的情況下改變。可能的值從0到6.
innodb_ft_aux_table
給Innodb 包含全文索引的表指定合格名稱,你設置這個變量的名稱格式為 db_name/table_name,然而INFORMATION_SCHEMA中的表 INNODB_FT_INDEX_TABLE, INNODB_FT_INDEX_CACHE, INNODB_FT_CONFIG,INNODB_FT_DELETED,和 INNODB_FT_BEING_DELETED 反映對指定表的索引搜索信息。該變量在MySQL5.6.4新增的。
innodb_ft_cache_size
?當創建一個InnoDB全文索引,用于存儲解析文檔在內存的緩存的大小。
?innodb_ft_enable_stopword
?在創建索引的時,指定一組與InnoDB全文索引相關禁用詞(stopwords)。如果innodb_ft_user_stopword_table 選項被設置,暫停詞來自那張表。另外,如果innodb_ft_server_stopword_table選項被設置,暫停詞來自那張表。否則,使用一個內置默認的暫停詞組。
innodb_ft_max_token_size
?存儲在InnoDB全文索引的最大字長。設定這個值的上限,可以減少索引的大小,通過忽略長關鍵詞或任意字符的集合,不是真正的單詞和不是搜索條件,可以加快查詢速度。
innodb_ft_min_token_size
?存儲在Innodb 全文索引的最少字長。增加這個值可以減少索引的大小,從而加快查詢,通過省略常見詞,在一個搜索上下文不太重要的詞,如英語單詞“a”和“to”。內容使用CJK(中國、日本、韓國)字符,指定一個值為1
?innodb_ft_num_word_optimize
在執行 OPTIMIZE TABLE操作時,對一個Innodb 全文索引處理字數。因為對一個表中包含一個全文搜索索引一個批量插入或更新操作,將所有的變化可能需要大量的索引維護,你可能會做一系列OPTIMIZE TABLE,每次做上次剩下,沒有的優化 。
innodb_ft_server_stopword_table
當創建一個InnoDB全文索引,包含一系列將被忽略的詞的表名。命名格式為db_name/table_name。注意禁用詞表必須是Innodb表,包含一個varchar列和值。在配置選項值指定表名之前,該禁用詞表必須存在。
innodb_ft_sort_pll_degree
當對一個大表構建搜索索引,在一個Innodb 全文索引上并行處理索引和標記文本的線程數。
?innodb_ft_user_stopword_table
當創建全文索引,包含一系列被忽略詞的表名。格式db_name/table_name。注意注意禁用詞表必須是Innodb表,包含一個varchar列和值。在配置選項值指定表名之前,該禁用詞表必須存在。
innodb_io_capacity
?innodb_io_capacity 參數設置每個緩沖池的實例在I/O執行InnoDB后臺的任務活動的上限能力,如沖從緩沖池洗頁面和從插入緩沖器合并數據。默認值是200。對于有更高I/O率能力的繁忙的系統,在服務器啟動,你可以設置一個更大的值,幫助服務器處理相關高速率行變化的后臺維護工作。注意在服務啟動時為 innodb_io_capacity指定值將使得innodb_io_capacity_max不可用。
對于5400RPM或7200PRM轉速的系統,你可能要調小先前默認為100.這個參數應該大約設置為系統可以每秒執行I/O操作數。理想情況下,保持這個設置低于實用的,但不能太低,以防這些后臺活動落后太多。如果該值過高,數據從緩沖池和插入緩沖被刪除太快而不能顯著受益于緩存。該值代表I/O操作(每秒IOPS)的比例,老一代磁盤驅動器執行約100 IOPS。當前默認200反映了現代存儲設備有更高的I/O能力。
?innodb_io_capacity_max
?限制InnoDB的 innodb_io_capacity 的最大值,每個緩沖池的實例,在緊急情況下。它的默認值是innodb_io_capacity默認值的兩倍,最小值為2000。如果在服務器啟動時設置innodb_io_capacity,它就不起作用的。這變量在MySQL5.6.6新增。
?innodb_large_prefix
對使用 DYNAMIC和COMPRESSED 行格式的InnoDB表,啟用這個選項允許前綴索引 長度可以長于767字節(最大為3072字節).(創建這些表也需要這些選項innodb_file_format=barracuda 和innodb_file_per_table=true.)在不同變量設置下,對應前綴索引的最大值見 Section 14.2.7, “Limits on InnoDB Tables” 。對使用REDUNDANT 和 COMPACT 行格式的表,這個選項不影響索引前綴所允許的長度。當這個選項被設置,當對REDUNDANT或COMPACT嘗試創建一個索引大于3072,發生一個ER_INDEX_COLUMN_TOO_LONG (1727)錯誤。
innodb_lock_wait_timeout
Innodb 放棄事務之前等待時間秒數。默認是50秒。一個事務訪問被其他事務鎖住的行,將在發起下列錯誤之前,等待的時間。
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
當等待鎖超時,當前語句被回滾 (不是整個事務),要回滾整個事務,服務要開啟 --innodb_rollback_on_timeout選項。另見Section 14.2.3.14, “InnoDB Error Handling”。對于高交互應用或OLTP系統,你可以減少這個值。顯示用戶的反饋迅速或把更新到一個隊列以變接下來處理。innodb_lock_wait_timeout僅用于Innodb 行級鎖。MySQL 表鎖不會發生在Innodb 內部,超時也不適用表鎖。鎖超時的值不用于死鎖,由于Innodb立即檢測死鎖,并且回滾一個死鎖的事務。
innodb_locks_unsafe_for_binlog
這個變量影響Innodb 對索引掃描如何使用間隙鎖 。從 MySQL5.6.3該選項被棄用,在將來版本會被刪除。
innodb_log_buffer_size
日志緩沖區大小。默認是8M。日志緩沖越大,就可以寫入更大事務而不用在提交之前把日志寫入到日志文件。如果你有許多行更新,插入,刪除的事務。使日志緩沖更大點,可以保護磁盤I/O。
innodb_log_compressed_pages (5.6.11)
指定重壓縮頁的位圖是否存儲到Innodb redo logs。這個變量在MySQL5.6.11新增的。
innodb_log_file_size
在一個日志組中每一個日志文件大小。日志文件合并后的大小((innodb_log_file_size *innodb_log_files_in_group)可以到達512G。默認是48M。值明智范圍從1MB到緩沖池的大小的1/n,N是日志文件組中文件數。值越大,在緩沖池執行checkpoint 刷新活動次數越小,節省磁盤I/O。日志文件越大,崩潰恢復越慢。盡管在MySQL5.5改善了恢復的性能和使日志文件更少考慮。
innodb_log_files_in_group
在日志組的日志文件數。
innodb_log_files_in_group
Innodb 的redo 日志文件的目錄路徑。
innodb_lru_scan_depth(5.6.3)
該參數影響對InnoDB緩沖池的沖洗操作的算法和啟發式。對性能主要作用調整I/O密集型工作負載。它指定在每個緩沖池實例中,查找將要掃描臟頁, page_cleaner線程掃描buffer pool LRU列表的深度。這是一個后臺操作一秒執行一次。如果在一個典型的負載下,你有多余的I/O容量,可以增加這個值。如果寫密集負載下,飽和了你I/O容量,減少這個值。尤其有一個更大緩沖池。
innodb_max_dirty_pages_pct
Innodb 從buffer pool嘗試涮洗數據,以便臟頁數據不會超出這個值。這個值范圍從0-99的整數。
innodb_max_dirty_pages_pct_lwm
低水位標志代表臟頁的比例,啟用preflushing控制臟頁比率。默認為0完全禁用preflushing行為。
innodb_max_purge_lag
該變量控制 purge 操作滯后多長,才延遲INSERT,UPDATE和DELETE 操作。默認是0(不延遲)。
InnoDB 事務系統維護一個事務列表。它記錄被UPDATE 和DELETE 操作標志為刪除的記錄。這個列表的長度
代表 purge_lag值。當purge_lag超過innodb_max_purge_lag,每個 INSERT, UPDATE, 和 DELETE 操作被延遲。延遲的數量是 ((purge_lag/innodb_max_purge_lag)*10)-5 毫秒。在極端情況下 purge_lag 巨大,以防止過度延遲。你可以設置一個延遲的時間上限通過 innodb_max_purge_lag_delay 配置選項,延遲是從開始清洗批次計算,每十秒。如果由于舊一致性讀 讀到要清除的行,不能運行清除,則操作不能延遲。
滯后的值顯示在InnoDB監控輸出的事務部分中的 history list length。例如,如果輸出包括以下行,滯后值是20:History list length 20
innodb_max_purge_lag_delay
指定最大延遲時間毫秒。任何非零值表示一個基于innodb_max_purge_lag值計算延遲時間的上限。默認為零意味著沒有強制延遲間隔的上限。
innodb_monitor_disable
關閉 INFORMATION_SCHEMA.INNODB_METRICS 表中一個或更多計數器。用法見Section 19.30.17, “TheINFORMATION_SCHEMA INNODB_METRICS Table”。
innodb_monitor_enable
打開 INFORMATION_SCHEMA.INNODB_METRICS 表中一個或更多計數器。用法見Section 19.30.17, “TheINFORMATION_SCHEMA INNODB_METRICS Table”
innodb_monitor_reset
重置INFORMATION_SCHEMA.INNODB_METRICS 表中一個或更多計數器的值為0.用法見 Section 19.30.17, “TheINFORMATION_SCHEMA INNODB_METRICS Table”.
innodb_monitor_reset_all
重置INFORMATION_SCHEMA.INNODB_METRICS 表中一個或更多計數器所有值(最小,最大,等待)。用法見
Section 19.30.17, “The INFORMATION_SCHEMA INNODB_METRICS Table”.
innodb_old_blocks_pct
指定buffer pool用于舊塊分表的百分比。范圍從5到95。默認是37(即pool的3/8).通常結合innodb_old_blocks_time一起使用。Buffer pool的信息見 Section 8.9.1, “The InnoDB Buffer Pool”
innodb_old_blocks_time
?非零值防止緩沖池在短時間每被查詢的數據填滿,比如在全表掃描。增加這個值提供了更多的保護防止全表掃描干擾緩沖池已緩存的數據。這個參數指定一個塊自從第一次被訪問到被移動到新塊列表之前,必須呆在舊塊列表多長時間(毫秒)。如果該值為0,一塊數據被插入到老分表一旦被訪問就立即移動新分表,哪怕是被插入后很快被訪問。如果值n大于0,塊留在舊分表,直到一個訪問發生在離第一次訪問至少有n毫秒。例如值為1000,表示塊在第一次訪問之后,在它們有資格移動到新塊列表之前,必須呆在老塊列表1秒鐘的時間。自從MySQL5.6.6 默認值是1000,之前是0。這個變量通常結合 innodb_old_blocks_pct一起使用。
innodb_online_alter_log_max_size
對InnoDB表在Online DDL 操作,臨時日志文件最大值。每個索引創建或修改表都有這個日志文件,這個日志文件存儲在DDL操作期間對表插入,更新,刪除的數據。當 innodb_sort_buffer_siz的值需要,臨時日志文件自動擴展直到innodb_online_alter_log_max_size指定的值。如果任何臨時日志文件超過這個上限,ALTER TABLE操作失敗和所有未提交的并發DML操作被回滾。因此在ONLINE DDL 操作期間,有大量DML并發,應該增大該值。但也導致結束DDL操作需要更長時間當表被鎖用來從日志應用數據。
innodb_open_files
這變量僅與你使用InnoDB多表空間文件有關,它指定MySQL在一時間保持打開.ibd 文件數。最小值是10,自從MySQL5.6.6默認值是300.
innodb_optimize_fulltext_only
改變OPTIMIZE TABLE語句操作Innodb表的方法,對含有全文索引的innodb表的維護操作期間,臨時啟用改變量。默認情況, OPTIMIZE TABLE 會對有聚集索引表進行重新整理數據。當啟用這選項,OPTIMIZE TABLE跳過表數據重新整理,僅對有全文索引的新增,更新和刪除的數據進行處理。更多信息見Section 14.2.3.12.3, “FULLTEXT Indexes”
?innodb_page_size
?指定頁大大小。當事例被創建時,設置這個變量,并且后面保持一個常量。
innodb_print_all_deadlocks (5.6.2)
當啟用改選,Innodb 事務中的死鎖信息被記錄到錯誤日志。否則,你使用 SHOW ENGINE INNODB STATUS命令,只能看到最后一條死鎖信息。InnoDB偶爾死鎖不一定是一個問題,因為InnoDB立即檢測條件,自動回滾一個事務。如果一個應用程序沒有適當的錯誤處理邏輯來檢測回滾和重試操作,您可以使用這個選項來排除為什么發生死鎖。如果有大量死鎖,確保每個事務對表訪問順序是一致來避免死鎖。
innodb_purge_batch_size
變化的粒度數,以redo日志記錄為單位來表示,如果改變達到該變量指定的數,則觸發一個(purge)清洗操作
刷新buffer pool中變化塊到磁盤。這個選項結合選項innodb_purge_threads=n用于調優性能。通常用戶不需要修改它。
innodb_purge_threads
用于InnoDB 清洗操作的后臺線程數。在MySQL5.6.5 新默認和最小值為1.這意味著清洗操作總是由后臺線程執行。而不是作為主線程一部分。非0值以一個或多個后臺線程運行沖洗操作。這可減少在InnoDB的內部競爭,改善伸縮性。增加該值大于1創建許多單獨的清洗線程,這可以在系統執行多個表的DML操作提高效率。最大是32。
innodb_random_read_ahead
為優化 InnoDB I/O棄用隨機預讀技術。這種設置最初是默認的,然后在MySQL5.5被移除,現在默認情況被關閉。詳細信息見“Changes in the Read-Ahead Algorithm”。
innodb_read_ahead_threshold
控制線性預讀的靈敏度,InnoDB使用它預抓取頁到緩沖池。如果Innodb 至少從一個段(64頁)順序讀取innodb_read_ahead_threshold 頁,它發起一個異步讀取整個接下來的段。允許的范圍0到64.默認是56:
InnoDB必須從某段按順序至少讀取56頁,對下面的段發起異步讀。
innodb_read_io_threads
Innodb用于讀操作的I/O線程數。默認是4.相對應寫線程是 innodb_write_io_threads。
innodb_read_only(5.6.7)
以只讀模式啟動服務。用于分發數據庫應用或數據設置為只讀的。也可以用于數據倉庫,多個實例之間共享同一數據目錄。用法見Section 14.2.5.1, “Support for Read-Only Media”
innodb_replication_delay
如果到達innodb_thread_concurrency限制,在一個從服務延遲復制線程(毫秒)innodb_rollback_on_timeout
在MySQL5.6,InnoDB 僅回滾超時事務的最后一條語句。如果指定--innodb_rollback_on_timeout,一個事務超時引起Innodb 中止和回滾整個事務(行為和MySQL4.1一致)。
innodb_rollback_segments
在系統表空間定義多少回滾段,如果一個小數量的回滾段對你的負載執行更好的話,可以從默認值128減少。
innodb_sort_buffer_size
指定多個緩沖區的大小用于在InnoDB索引創造期間排序數據。在此設置為可配置之前,大小固定為1 MB,值仍然是默認的。這排序區域僅用于在創建索引期間合并排序,而不是用于后續索引維護操作。在 ALTER TABLE或 CREATE TABLE 創建一個索引期間,分配3個緩沖區,每個緩沖區的大小都使用該選項。這些緩沖區在創建索引完成時將其收回。這個選項的價值也控制臨時日志文件擴展大小,該日志文件記錄在線DDL期間并發DML操作的數據。
innodb_spin_wait_delay
為一個spin 鎖,最大延遲(The maximum delay between polls for a spin lock)。底層實現這種機制變化取決于硬件和操作系統,所以延遲并不對應于一個固定的時間間隔。默認值是6。
innodb_stats_auto_recalc
導致InnoDB自動重新計算持續統計( persistent statistics),當一個表中的數據是發生了顯著變化。閾值是表中的行的10%。這個設置適用于表創建時啟用了innodb_stats_persistent,或是在CREATE TABLE 或ALTER TABLE語句 使用 STATS_PERSISTENT=1 子句。用于產生統計信息的采樣數據的數量是由配置選項innodb_stats_persistent_sample_pages控制的。
innodb_stats_method
當對InnoDB表統計索引分布信息時,服務是如何看待NULL值。這個變量有三個允許的值。nulls_equal,nulls_unequal和 nulls_ignored。對nulls_equal,所有NULL索引值被認為是相等的并且形成一個單值組,大小為NULL 值的個數,對nulls_unequal,NULL被看做不相等的。每個NULL形成唯一大小為1的值組,對nulls_ignored, NULL值被忽略。這個選項僅用于生成統計信息,影響優化器選擇索引。
innodb_stats_on_metadata
當這個變量被啟用,當執行元數據語句如 SHOW TABLE STATUS 或 SHOW INDEX,或當訪問 INFORMATION_SCHEMA中的表或統計信息期間,Innodb更新統計信息。(這個更新類似 ANALYZE TABLE所發生的事),禁用該選項,當執行這些操作期間,不更新統計信息。這個變量設置為禁用,可以提高訪問數據庫有大量的表或索引的速度。它還可以提高查詢InnoDB表的執行計劃的穩定性。在5.6.6之前是啟用,其后是禁用的。
innodb_stats_persistent
指定通過ANALYZE TABLE命令產生InnoDB 索引統計信息是保存到磁盤,保持一致性,直到后續執行 ANALYZE TABLE。還是統計信息重新計算更加頻繁,如每次服務重啟。這可能導致查詢執行計劃發生變化。這個設置是存儲在每個表上,當表在創建時。你可以通過帶有STATS_PERSISTENT 子句的create table 或alter? table命令來修改。
innodb_stats_persistent_sample_pages
指定樣品的索引頁的數量,當對一個索引列進行估計基數和其他的統計信息時。如通過 ANALYZE TABLE計算這些信息。默認值是8。增加該值可以提高索引統計信息的準確性,從而改善查詢的執行計劃,當對InnoDB表 執行ANALYZE TABLE期間,以增加I/O為代價。此選項僅適用于當 innodb_stats_persistent 設置是ON,當該選項為一個表設置OFF,innodb啟用? innodb_stats_transient_sample_pages來代替。innodb_stats_sample_pages
從5.6.3被棄用,用 innodb_stats_transient_sample_pages 代替。
innodb_stats_transient_sample_pages
指定樣品的索引頁的數量,當對一個索引列進行估計基數和其他的統計信息時。如通過 ANALYZE TABLE計算這些信息。默認值是8。增加該值可以提高索引統計信息的準確性,從而改善查詢的執行計劃,當打開InnoDB表或重新計算統計信息,以增加I/O為代價。此選項僅適用于當 innodb_stats_persistent 設置是OFF,當該選項為一個表開啟了,innodb啟用 innodb_stats_persistent_sample_pages來代替。該選項替代innodb_stats_sample_pages選項。詳細信息見 Section 14.2.5, “InnoDB Features for Flexibility, Ease of Use and Reliability”。
innodb_strict_mode
InnoDB 對一些條件是否返回錯誤而不是警告。這是類似于嚴格的SQL模式,默認是OFF。
innodb_support_xa
啟用分布式事務,為事務準備引起額外的磁盤刷新。這個設置是默認的。XA機制內部使用,并且對任何開啟二進制日志接受來自一個線程和多個線程改變的數據的服務是必不可少的。如果你把它關掉,事務可以按數據庫提交事務不同的順序寫入二進制日志。這可以產生不同的數據當二進制日志用于災難恢復或復制的從服務。在復制不要關掉主服務器上的這個變量,除非你有一個不尋常的設置,只有一個線程能夠改變數據。
innodb_sync_array_size
將一個內部數據結構分裂用來協調線程,因為高并發性負載有大量正等待的線程。這個設置必須在MySQL實例開始時配置,之后是不能改變的。增加這個選項值是推薦用于工作負載經常產生大量等待的線程,通常大于768。
innodb_sync_spin_loops
一個線程在被掛起之前,等待InnoDB 互斥鎖成為可用的次數。默認是30.
innodb_table_locks
如果autocommit=0,InnoDB 支持lock tables;MySQL 不從LOCK TABLES ... WRITE返回結果,直到所有其他線程已經釋放這個表的鎖。 innodb_table_locks默認值1,這意味著lock tables 引起InnoDB內部鎖表,如果autocommit=0.
innodb_thread_concurrency
InnoDB試圖保持小于或等于這個變量限定的操作系統中線程數同時在InnoDB內。一旦線程的數量達到了這一限制,額外的線程出于等待狀態,FIFO隊列來執行。等待鎖的線程數不統計并發執行的線程數。這個變量正確值依賴環境和負載,嘗試不同范圍的值來決定適合您的應用程序的值。推薦的值為cpus內核+磁盤數量的2倍。該變量范圍0到1000.默認值0 表示無限并發(無并發檢查)。禁用線程并發檢查使InnoDB創建和它需要多的線程,0值也禁用 queries inside InnoDB和queries in queue 計算器。在 SHOW ENGINE INNODB STATUS 輸出的row小節中。
innodb_thread_sleep_delay
在進入InnoDB隊列之前,InnoDB 線程睡眠時間,微秒。默認值是10000。0表示禁用睡眠。
innodb_undo_directory
InnoDB 為undo 日志創建單獨的表空間文件的相對或絕對路徑。典型將這些日志存儲在不同的存儲設備。結合innodb_undo_logs 和 innodb_undo_tablespaces 一起使用。這個變量決定在系統表空間之外的undo 日志的存儲布局。默認 .表示和其他日志在同一個目錄。
innodb_undo_logs(5.6.3)
在系統表空間文件定義回滾段數,這個設置是適合調優性能如果你發現對相關undo日志發生互斥鎖爭用。取代了innodb_rollback_segments的設置。可使用undo日志的總數,而不是活動的的數量,請參閱Innodb_available_undo_logs狀態變量。
innodb_undo_tablespaces(MySQL5.6.3)
當設置非0值,undo日志 被分成表空間文件數,默認情況下,所有undo 日志是系統表空間一部分。由于undo 日志在長運行事務會變得非常大。將undo日志分成多個表空間,減少一個表空間文件最大值。表空間文件在位于innodb_undo_directory定義的目錄下創建。命名格式為 innodbN,N是一系列整數。
innodb_use_native_aio
指定是否使用Linux異步i/o子系統。這個變量只適用Linux系統,并且當服務運行時,不能被修改。
通常,你不需要接觸該選項,因為默認是啟用的。如果在操作系統異步i/o子系統阻止Innodb啟動,可以通過在配置文件中使用innodb_use_native_aio=0 啟動服務。
innodb_use_sys_malloc
InnoDB 使用操作系統的內存分配算法(on)或自身(OFF)。默認值是ON。自從MySQL5.6.3,
innodb_use_sys_malloc 被棄用,在將來版本將被刪除。
innodb_version
InnoDB 版本號,從5.6.11開始,InnoDB不在有單獨版本號,這個值和變量version 一致。
?innodb_write_io_threads
InnoDB 中用于寫操作的I/O線程數。默認是4,其對應讀線程數是innodb_read_io_threads 。對通常I/O調優建議,見Section 8.5.7, “Optimizing InnoDB Disk I/O”。注意:在Linux系統,運行多個MySQL 服務(通常大于12)對 innodb_read_io_threads, innodb_write_io_threads使用默認設置,并且Linux aio-max-nr的設置可以超過系統限制。理想情況下,增加 aio-max-nr 設置;作為解決方法,你可能會減少MySQL配置選項一個或兩個( innodb_read_io_threads, innodb_write_io_threads)的設置。
sync_binlog
?如果這個變量值N大于0,MySQL 服務每N次寫二進制日志才同步(使用fdatasync())到磁盤。如果自動提交啟用,每條語句被就寫一次二級制日志,否則每個事務就寫一次二進制日志。這個值默認是0,沒有同步到磁盤,如果值為1,是最安全選擇,因為在崩潰中你從二進制日志最多丟失一條語句或一條事務。然而,這也是最慢的選擇(除非磁盤有一個電池支持緩存,這使得同步非常快)。
[replication ]
在slave配置選項
--abort-slave-event-count=# (數值型,默認值0,最小值0,可以在命令行或配置文件設置)。但該選項設置大于0的值n,它的影響復制行為:從服務SQL線程已經啟動,那么n條日志事務被執行,過后,SQL線程不再接受任何事務了。就好像來自主服務網絡連接被切斷。slave線程繼續執行,show slave status 結果顯示slave_io_running和slave_SQL_running 都為yes.但沒有任何來自中繼日志的日志事務被讀取。該項適用于MySQL測試和調試。不用于生產環境。)
--disconnect-slave-event-count=#
(數值型,默認值0,可以在命令行或配置文件設置,該項適用于MySQL內部測試和調試。)
--log-slave-updates (該變量是全局的,為布爾型,默認FALSE.可以通過命令行或配置文件,還可以用set命令設置。通常從服務不記錄來自主服務的日志到自己二進制日志中,該選項控制是否記錄來自主服務的SQL。該項有效,還必須開啟--log-bin 選項。5.5和之前版本,如果沒有開啟--log-bin而開啟該選項會報錯。但在5.6會出現警告)
--log-slow-slave-statements
(該選項為布爾型的,默認OFF),當啟用慢日志時,該項能記錄在從服務執行超過 long_query_time 的查詢)
--log-warnings[=level]
(該變量是全局的,為數值,默認1,范圍0 .. 18446744073709547520,該項引起服務打印更多信息到錯誤日志,對于復制來說,在網絡或連接失敗后,服務會生成一條警告,告知在重連接成功了,并告訴你每個從服務線程啟動如何。該項默認啟動,禁用它--skip-log-warnings.如果該值大于1,連接中斷的錯誤,和新連接嘗試被拒絕訪問的錯誤被寫入錯誤日志。)
--master-retry-count=#
(該選項為數值,默認值86400。從服務在放棄連接主服務的嘗試的次數,每次重試間隔由CHANGE MASTER TO 中的選項master_connect_retry控制,默認為60。在5.6.1被棄用,在MySQL以后系列將移除,應用程序應該更新使用CHANGE MASTER TO 中的MASTER_RETRY_COUNT 選項代替)
--max-relay-log-size=size 默認1G
--read-only
(除了來自從服務線程或超級用戶可以執行更新操作外,不允許其他執行更新。該變量不適用于臨時表)
--relay-log=file_name
--relay-log-info-file=file_name(默認relay-log.info)
--relay-log-purge={0|1}
(是否啟用自動刪除沒有必要的中繼日志,默認啟用,變量是全局,可以動態設置)
--relay-log-recovery={0|1}
(服務一旦啟動,就立即啟用中繼日志恢復,這意味著復制從服務丟棄未處理中繼日志和從主服務重新取回它們,這應該用于發生在復制的從服務崩潰,確保沒有損壞的中繼日志被執行。默認時禁用,為了提供一個防崩潰從服務,必須啟用它。
在MySQL5.6.6之前版本,對多線程從服務啟用這選項,從服務因錯誤而失敗。在那從服務不能執行change mater to.在mysql5.6.6和之后版本你可以使用start_slave_until_sql_after_mts_gaps來確保這期間的中繼日志被執行,然后使用change master to 是失敗的從服務指向新主服務。
)
--relay-log-space-limit=size
(該選項最大限制從服務所有中繼日志總共的大小,0表示沒有限制。對從服務的硬盤空間有限,該選項是用的。當達到該限制,io線程停止從主服務讀取二進制日志事務,直到SQL線程已經趕上并刪除沒有用的中繼日志。注意這個限制不是絕對的:有些情況,SQL線程在它可以刪除中繼日志之前需要更多事務日志,在這種情況,io線程只要超過該限制,sql線程才能刪除中繼日志。不這樣做將引起一個死鎖。如果--max-relay-log-size為0,你不應設置relay-log-space-limit小于 --max-relay-log-size 或--max-binlog-size的兩倍)。在該情況下,io有等待空間的機會,
因為relay-log-space-limit被超過了,但是SQL線程沒有日志可刪來滿足io線程。這強制io線程暫時忽略--relay-log-space-limit的限制)
--replicate-do-db=db_name
這選項的影響依賴復制使用SBR還是RBR(詳細見http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#option_mysqld_replicate-do-db)
--replicate-ignore-db=db_name
--replicate-do-table=db_name.table_name
--replicate-ignore-table=db_name.tbl_name
--replicate-rewrite-db=from_name->to_name
--replicate-wild-do-table=db_name.tbl_name
--replicate-wild-ignore-table=db_name.tbl_name
--replicate-same-server-id
(使用在從服務,通常你使用默認值0,來防止死循環引起循環復制,設置1,從服務不跳過自己服務ID的事務。僅在罕見配置設置。如果啟用 --log-slave-updates 不能設置1.默認下,從服務IO線程不寫二進制日志事務到中繼日志,當它們有相同服務ID(這種優化幫助節省硬盤空間))
--report-host=host_name
從服務的主機名或IP地址,將在從服務登記時發給主服務。在主服務使用show slave hosts將顯示從服務的主機名和或ip地址。
--report-password=password
--report-port=slave_port_num
--report-user=user_name
--show-slave-auth-info
(該選項是布爾型,默認是FALSE,在主服務使用show slave hosts 顯示從服務啟用--report-user和--report-password
的用戶名和密碼)
--slave-checkpoint-group=#
(5.6.3引入該選項,數值型,默認512,范圍32..524280。在checkpoint操作被調用更新它的狀態如show slave status(做show slave status 會執行checkpoint操作)之前,從服務多線程處理最大事務的數量數。
如果沒有啟動從服務多線程,該項就不起作用。
該項結合--slave-checkpoint-period以這樣方式工作:任一選項限制被超出,執行checkpoint操作,并且事務數量和過去時間的計數器被重置。
最小允許的值是32,除非構建服務使用--with-debug,在這種情況下最小可以設置1。有效值總是8的倍數。如果設置值不是8的倍數,但服務存儲時,下降到最近8的倍數的值。
)
--slave-checkpoint-period=#
(5.6.3引入該選項,數值型,默認值300,范圍1..4G.毫秒,與上面的選項的限制一致)
--slave-parallel-workers
(5.6.3引入該選項,數值型,默認值0,范圍0..1024。設置從服務線程數來并行執行復制中事務,默認是0,不并行執行。最大1024.
當啟用并行執行,從服務SQL線程充當從服務工作線程協調者,其中事務基于數據庫分配。這意味著在從服務一個工作線程可以連續處理指定數據庫的事務而不要等待其他數據庫完成更新。當前從服務多線程實現假定數據被分隔成每個數據庫,并且在指定數據庫的更新的相對順序和在主服務是一致的,為了正確工作。然而,事務不能包含任何兩個數據庫之間的操作
由于不同的數據庫的上的事務在從服務執行的順序可以不同于主服務。檢查最近執行的事務并不保證主服務上的所有之前的事務在從服務已經被執行了。當使用多線程,必然影響到日志和恢復。當在從服務使用多線程,有關如何解析二進制日志信息參照 Section 13.7.5.35, “SHOW SLAVE STATUS Syntax”。另外,多線程從服務意味不支持 START SLAVE UNTIL
您還應該注意,在MySQL 5.6.7和之后,在不同數據庫的表執行外鍵之間的關系導致從服務多線程使用順序而不是并行的模式,會對性能產生負面的影響。(錯誤# 14092635)
注意:在MySQL 5.6 .3該選項值設置(或對應系統變量 slave_parallel_workers )并不總是正確;這個問題在MySQL 5.6.4修復(錯誤# 13334470)。
)
--slave-pending-jobs-size-max=#
(5.6.3引入該選項,數值型,默認值16M,范圍1024..18EB,塊大小1024.對于多線程從服務,這選項設置最大內存(字節)可用于從服務工作隊列存放沒有處理過的日志事務,沒有啟用多線程,該項對從服務沒有影響。
注意:該值不能小于主服務上的MAX_allowed_packet,否則一個從服務工作隊列已滿,然而還有其他來自主服務的事件被處理。
)
--skip-slave-start
--slave_compressed_protocol={0|1}
--slave-load-tmpdir=file_name
(默認/tmp)
--slave-skip-errors={err_ode1,err_code2...}
(默認關閉,它可用值為錯誤的號碼。通常,當在從服務發生錯誤,復制停止。這你機會手動去解決不一致性的數據。這個選項告訴從服務SQL線程繼續復制當一個語句返回任何錯誤出現在該選項值。對于錯誤碼應該使用錯誤日志或show slave status 提供的。
MySQL5.6支持一個額外縮寫值ddl_exists_errors.它等效于1007,1008,4050,1051,1054,1060,1061,1068,1094,1146錯誤
)
--slave-sql-verify-checksum={0|1}
(該項為布爾值,默認0,當啟用該選項,從服務檢查來自中繼日志校驗和,如果不匹配,從服務發出一個錯誤,停止執行。該項5.6.2添加的,默認禁用)
過時選項
以下選項從MySQL 5.6移除。如果你試圖使用這些選項開啟mysqld,服務以unknown variable 錯誤中止。以前設置復制參的數附帶這些選項,您必須使用change master to ...來聲明。
--master-host? --master-user? --master-password? --master-port? --master-connect-retry --master-ssl
--master-ssl-ca --master-ssl-capath? --master-ssl-cert --master-ssl-cipher --master-ssl-key
用于復制從服務的系統變量
下面的列表描述了系統變量控制復制中從服務器。他們在服務器啟動可以設置和其中的一些可以在運行時改變選項設置。使用復制奴隸列出本節前面。用于復制從服務器的選項在前面已列出。
init_slave=#
(該變量是動態,全局的,這變量類似init_connect,但是從服務器每次開始SQL線程都會執行該字符串。字符串的格式是init_connect變量是一樣的。
注意:在執行init_salve之前SQL線程發送回復給客戶端。因此,不能保證init_salve 被執行當start slave 返回。更多信息見 Section 13.4.2.5, “START SLAVE Syntax”,
)
log_slow_slave_statements
(該變量是動態,全局的,布爾類型。默認OFF,當啟用了慢速查詢日志,這個變量記錄在從服務執行已經超過long_query_time秒的查詢。MySQL5.6.11添加此變量 )
master_info_repository
(該變量是動態,全局的,值為FILE,TABLE, 該變量決定從服務記錄主服務的狀態和連接信息到文件(master.info)
還是表(mysql.slave_master_info)。MySQL5.6引入該選項)
relay_log
(該變量是靜態的,全局的)
relay_log_basename
(該變量是靜態的,全局的。默認'datadir + '/'+hostname +'-relay-bin' ,包含名稱和中繼日志的完整路徑。
MySQL5.6.2引入該變量 )
relay_log_index
(該變量是靜態的,全局的)
relay_log_info_file
(該變量是靜態的,全局的,默認relay-log.info)
relay_log_info_repository
(該變量是動態,全局的,值為FILE,TABLE, 該變量決定從服務記錄中繼日志位置信息到文件(relay-log.info)
還是表(mysql.slave_relay_log_info)。MySQL5.6引入該選項)
relay_log_recovery
(該變量是動態,全局的,布爾型,一旦服務啟動,啟用自動中繼日志恢復。這意味著丟棄所有未處理中繼日志,從主服務重新檢索它們。
在MySQL 5.6.5和之前版本,它動態改變這個全局變量;從MySQL 5.6.6,它是只讀的。(錯誤# 13840948)無論MySQL服務器是什么版本,其值可以改變通過啟動slave使用--relay_log_recovery選項,應該使用在復制從服務崩潰后確保沒有損壞中繼日志處理可以使用該變量,必須使用它以保證防崩潰的從服務。默認值為0(禁用)。
當啟用relay_log_recovery和從服務必須終止,因為在多線程模式下會遇到錯誤,如果在日志中位置有任何間距,你不能執行change master to 。從MySQL 5.6.6,您應該使用 START SLAVE UNTIL SQL_AFTER_MTS_GAPS ,以確保所有的空隙被處理后切換回單線程模式或執行change master to 語句。
)
slave_exec_mode
(該變量是動態,全局的,默認STRICT(ALL),IDEMPOTENT(NDB),控制用IDEMPOTENT還是用 STRICT 方式處理復制中沖突和錯誤檢查。 IDEMPOTENT 模式導致抑制重復鍵和鍵不存在的錯誤,和其他一些特殊的復制場景。STRICT是默認的,適合其他大多數場景)
slave_transaction_retries
(該變量是動態,全局的。默認10,如果一個復制從服務SQL線程無法執行事務,由于Innodb死鎖或事務執行時間超過Innodb的innodb_lock_wait_timeout,),它會在出現錯誤停止之前自動重試 slave_transaction_retries 次數。默認值是10。
slave_type_conversions
(該變量是靜態,全局的。控制類型轉換模式,當使用基于行的復制才有效。它的值以逗號分隔,設置零或多個元素從列表:ALL_LOSSY, ALL_NON_LOSSY。將這個變量設置為一個空字符串類型來不允許在主從之間進行類型轉換。修改需要重新啟動從服務才能生效。)
sql_slave_skip_counter
(類型為數值,動態,全局的,從服務跳過事件的數量。這選項與基于GTID復制不兼容,當使用 --gtid-mode=ON,設置改選項為0,在MySQL5.6.10和以后版本,嘗試這樣做是特禁止的 (Bug #15833516)。當你使用gtid-mode=ON,要跳過事務,在主服務使用gtid_executed來代替。如何做,詳細見 Injecting empty transactions
重點:如果指定事件的數量通過設置這個變量會導致從服務從事件組中間開始,從服務繼續跳過,直到找到下一個事件的開始,從那點開始。有關更多信息,請參見 Section 13.4.2.4, “SET GLOBAL sql_slave_skip_counter Syntax”.
)
sync_master_info=#
(該變量是數值型,動態,全局,在MySQL5.6.6之前默認為0,MySQL5.6.6和之后版本默認都是10000。該變量是否有效取決于master_info_repository設置FILE或TABLE。master_info_repository = FILE 。如果 sync_master_info值大于0 ,每sync_master_info 事件之后,同步master.info文件到硬盤(使用fdatasync())如果是0,MySQL服務器不執行同步master.info到磁盤;相反,服務器依賴于操作系統定期沖洗其內容。
master_info_repository = TABLE 如果sync_master_info 該值大于0,在每sync_master_info事務,從服務更新它的master_info_repository 表。如果是0,這個表是從不更新。
?)
?sync_relay_log_info=#
(該變量是數值型,動態,全局,在MySQL5.6.6之前默認為0,MySQL5.6.6和之后版本默認都是10000。該變量是否有效取決于 relay_log_info_repository設置FILE或TABLE,還依賴存儲引擎是事務還是非事務。
如果relay_log_info_repository=file,sync_master_info值N大于0,每N 事件之后,同步relay-log.info 文件到硬盤(使用fdatasync()).如果是0,MySQL服務器不執行同步relay-log.info到磁盤;相反,服務器依賴于操作系統定期沖洗其內容。
sync_relay_log_info =TABLE,
?
總結
以上是生活随笔為你收集整理的MySQL5.6 选项和变量整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongoDB add user in
- 下一篇: 58同城数据库架构最佳实践