Mysql5.5 InnoDB存儲引擎設置裝備擺設和優化。本站提示廣大學習愛好者:(Mysql5.5 InnoDB存儲引擎設置裝備擺設和優化)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql5.5 InnoDB存儲引擎設置裝備擺設和優化正文
情況為CentOS體系,1G內存,Mysql5.5.30。
在/etc/my.cnf內添加:
skip-external-locking
skip-name-resolve
max_connections = 1024
query_cache_size = 16M
sort_buffer_size = 1M
table_cache = 256
innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 4M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1
修正前先將mysql辦事停滯:
service mysqld restart
因為修正了日記年夜小重啟會報錯:
130319 04:45:14 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
130319 05:02:43 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130319 5:02:54 [Note] Plugin 'FEDERATED' is disabled.
130319 5:02:59 InnoDB: The InnoDB memory heap is disabled
130319 5:02:59 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
130319 5:02:59 InnoDB: Compressed tables use zlib 1.2.3
130319 5:02:59 InnoDB: Using Linux native AIO
130319 5:03:01 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:03:02 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 134217728 bytes!
130319 5:03:02 [ERROR] Plugin 'InnoDB' init function returned error.
130319 5:03:02 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130319 5:03:02 [ERROR] Aborting
將/var/lib/mysql下本來的ib_logfile0、ib_logfile1刪除再重啟mysql。
service mysqld start
正常啟動:
130319 05:20:59 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
130319 05:22:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
130319 5:22:56 [Note] Plugin 'FEDERATED' is disabled.
130319 5:22:57 InnoDB: The InnoDB memory heap is disabled
130319 5:22:57 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
130319 5:22:57 InnoDB: Compressed tables use zlib 1.2.3
130319 5:22:57 InnoDB: Using Linux native AIO
130319 5:22:57 InnoDB: Initializing buffer pool, size = 128.0M
130319 5:22:57 InnoDB: Completed initialization of buffer pool
130319 5:22:57 InnoDB: highest supported file format is Barracuda.
130319 5:22:58 InnoDB: Waiting for the background threads to start
130319 5:22:59 InnoDB: 5.5.30 started; log sequence number 2621452
130319 5:22:59 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130319 5:22:59 [Note] - '0.0.0.0' resolves to '0.0.0.0';
130319 5:22:59 [Note] Server socket created on IP: '0.0.0.0'.
130319 5:23:00 [Warning] 'proxies_priv' entry '@ root@server08' ignored in --skip-name-resolve mode.
130319 5:23:04 [Note] Event Scheduler: Loaded 0 events
130319 5:23:04 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.30' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL) by Remi
應用mysqladmin variables敕令可檢查一切參數變量。
InnoDB引擎設置裝備擺設優化
innodb_buffer_pool_size=1G //一個Innodb最主要的參數,這個參數和MyISAM的key_buffer_size有類似的地方,但也是有差異的。這個參數重要緩存innodb表的索引,數據,拔出數據時的緩沖,設置得越年夜,存取內外面數據時所須要的磁盤I/O越少,普通是內存的一半,不跨越2G,不然體系會瓦解。為Innodb加快優化重要參數。該參數分派內存的准繩:這個參數默許分派只要8M,可以說長短常小的一個值。假如是一個公用DB辦事器,那末他可以占到內存的70%-80%。這個參數不克不及靜態更改,所以分派需多斟酌。分派過年夜,會使Swap占用過量,導致Mysql的查詢特慢。假如你的數據比擬小,那末可分派是你的數據年夜小+10%閣下做為這個參數的值。
例如:數據年夜小為50M,那末給這個值分派innodb_buffer_pool_size=64M
innodb_additional_mem_pool_size=16M //用來寄存Innodb的外部目次這個值不消分派太年夜,體系可以主動調。不消設置太高。平日比擬年夜數據設置16M夠用了,假如表比擬多,可以恰當的增年夜。假如這個值主動增長,會在error log有中顯示的。
innodb_log_file_size=256M //在日記組中每一個日記文件的年夜小,普通是innodb_buffer_pool_size的25%,官方推舉是innodb_buffer_pool_size的40-50%。普通掌握在幾個LOG文件相加年夜小在2G之內為佳。詳細情形還須要看你的事務年夜小,數據年夜小為根據。解釋:這個值分派的年夜小和數據庫的寫入速度,事務年夜小,異常重啟後的恢復有很年夜的關系。
innodb_log_files_in_group=2 //指定你有幾個日記組。分派准繩:普通我們可以用2-3個日值組。默許為兩個。
innodb_log_buffer_size=3M //事務在內存中的緩沖。分派准繩:掌握在2-8M.這個值不消太多的。他外面的內存普通一秒鐘寫到磁盤一次。詳細寫入方法和你的事務提交方法有關。在oracle等數據庫懂得這個,普通最年夜指定為3M比擬適合。
innodb_flush_logs_at_trx_commit=0 //掌握事務的提交方法分派准繩:這個參數只要3個值,0,1,2請確認一下自已能接收的級別。默許為1,主庫請不要更改了。機能更高的可以設置為0或是2,但會喪失一秒鐘的事務。解釋:這個參數的設置對Innodb的機能有很年夜的影響,所以在這裡給多解釋一下。當這個值為1時:innodb 的事務LOG在每次提交後寫入日值文件,並對日值做刷新到磁盤。這個可以做到不丟任何一個事務。當這個值為2時:在每一個提交,日記緩沖被寫到文件,但纰謬日記文件做到磁盤操作的刷新,在對日記文件的刷新在值為2的情形也每秒產生一次。但須要留意的是,因為過程挪用方面的成績,其實不能包管每秒100%的產生。從而在機能上是最快的。但操作體系瓦解或失落電才會刪除最初一秒的事務。當這個值為0時:日記緩沖每秒一次地被寫到日記文件,而且對日記文件做到磁盤操作的刷新,然則在一個事務提交不做任何操作。mysqld過程的瓦解會刪除瓦解前最初一秒的事務。