2011-09-05 92 views
24

最近,我發現,如果我有很好的硬件,我可以最大化mysql性能。由於我一直使用的是InnoDB我添加額外的配置成的my.ini未知的表引擎'InnoDB'

這裏是新增加的配置:

innodb_data_file_path = ibdata1:10M:autoextend 
innodb_buffer_pool_size = 2G 
innodb_additional_mem_pool_size = 2M 
innodb_log_file_size = 256M 
innodb_log_buffer_size = 8M 
innodb_flush_log_at_trx_commit = 1 
innodb_lock_wait_timeout = 120 

然後我重新啓動所有的服務。但是當我使用我的程序時,發生錯誤「未知表引擎'InnoDB'」。

我試圖解決這個問題:

  1. 我刪除日誌文件重新啓動該服務,但我仍然得到了錯誤。

回答

11

我剛剛重試刪除日誌文件並重新啓動服務,它的工作原理! 但是要小心2G分配,因爲innodb可能不會編譯,如果2G不起作用請使用1G

+1

這是位於/ var/lib中/ MySQL的/我(的chroot-ED),它也可以發現@在/ usr /本地/ MySQL的/ data/ –

+0

另一個可能的日誌位置是/ mysqldb/logs/ – MarkHu

+2

只是刪除日誌文件並重新啓動mysql爲我工作..謝謝 – Sree

8

我也遇到了這個問題爲好。問題是我給InnoDB分配的內存比變量innodb_buffer_pool_size的服務器多。 MySQL並沒有抱怨沒有能夠在其日誌中分配這些內存。

0

從備份恢復時出現此問題。問題是我在my.ini中有一些不同的設置。所以如果有人遇到這個問題,請確保設置相同的設置(複製my.ini),停止MySQL服務,然後恢復整個數據文件夾,然後再次啓動MySQL服務。

12

1.檢查,看是否已啓用InnoDB支持:

mysql> show variables like 'have_innodb'; 
+---------------+-------+ 
| Variable_name | Value | 
+---------------+-------+ 
| have_innodb | YES | 
+---------------+-------+ 
1 row in set (0.00 sec) 

2.如果上面的值被禁用,那麼你就需要啓用InnoDB的。

3.打開MySQL的配置文件。

  • 的Windows:在各種平臺上,配置文件可以在文件名和位置不同,$ MYSQL_INSTALL_DIRECTORY/my.ini的

  • 的Linux/Unix:/etc/mysql/my.cnf

4.如果參數跳innodbis註釋掉/存在,那麼只需將其註釋掉:

# skip-innodb 

5。關閉MySQL服務器,刪除/重命名MySQL的日誌刷新整個服務器的日誌,並重新啓動MySQL服務器:

  • 的Linux:

    ~$: /etc/init.d/mysql stop

    ~$: rm /var/lib/mysql/ib_logfile*

    ~$: /etc/init.d/mysql start

  • Windows:

    轉至$ MYSQL_INSTALL_DIRECTORY/data並刪除/移動前綴爲ib_logfile的日誌文件。

1

如果你完全破壞你的my.cnf文件,你有另一個選擇是用mysql安裝的默認配置替換它。對於Linux:

您有以下選項,

/usr/share/mysql/my-huge.cnf 
/usr/share/mysql/my-innodb-heavy-4G.cnf 
/usr/share/mysql/my-large.cnf 
/usr/share/mysql/my-medium.cnf 
/usr/share/mysql/my-small.cnf 

下面是一個例子來安裝它:

#backup original config 
mv /etc/my.cnf{,.bak} 

#copy new my.cnf from template 
cp /usr/share/mysql/my-large.cnf /etc/my.cnf 

這些選項的詳細信息,請http://dev.mysql.com/doc/mysql/en/option-files.html

4

我試着所有這些(和許多其他),但對我而言,一種可行的方法是:

  • 停止MySQL服務器
    /etc/init.d/mysql stop
  • 刪除日誌文件
    rm ib_logfile0 ib_logfile1
  • 重命名InnoDB的文件(如果沒有別的辦法,因爲這將重新創建) mv ibdata1 old_ibdata1
  • 我有這個CONFIGS在/etc/mysql/my.cnf - >即使您沒有指定,MySql將使用默認值。

    [mysqld] 
    datadir=/data/mysql/data 
    socket=/var/run/mysqld/mysqld.sock 
    
    #Not a must to define the following 
    innodb_log_file_size=1G 
    innodb_file_per_table=1 
    innodb_flush_method=O_DIRECT 
    innodb_buffer_pool_size=1G 
    innodb_data_file_path=ibdata1:10M:autoextend 
    innodb_lock_wait_timeout=18000 
    
  • 啓動MySQL服務器
    /etc/init.d/mysql start

+0

是的,如果配置一切正常,刪除日誌文件一直工作。 – rechie

+0

您剛剛保存了整個託管公司的未來.... – spetsnaz

相關問題