最近、優れたハードウェアがあればmysqlのパフォーマンスを最大化できることがわかりました。 InnoDBを使用していたので、my.iniに追加の構成を追加しました
新しく追加された構成は次のとおりです。
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'」というエラーが発生しました。
私がこの問題を解決しようとしたこと:
他の解決策は私の問題を解決しませんでした。構成を調整した後、InnoDBエンジンが無効になりました。
Mysql data dirの破損したib_ *ログファイルを削除すると問題が解決し、InnoDBに2Gバッファープールを使用できるようになりました。 http://www.turnkeylinux.org/forum/support/20090111/drupal-6-problem -enable-innodb#comment-131
ログファイルの削除を再試行し、サービスを再起動しましたが、機能します! ただし、innodbがコンパイルされない可能性があるため、2Gの割り当てに注意してください。1Gを使用してください 2Gが機能しない場合。
私もこの問題に遭遇しました。問題は、サーバーが変数innodb_buffer_pool_size
を使用していたよりも多くのメモリをInnoDBに割り当てていたことです。 MySQLは、これについてログにメモリを割り当てることができないことについて文句を言いませんでした。
私はそれらすべて(および他の多く)を試しましたが、動作する1つの方法は次のとおりです。
/etc/init.d/mysql stop
rm ib_logfile0 ib_logfile1
mv ibdata1 old_ibdata1
/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
My.cnfファイルを完全にマングルする場合のもう1つのオプションは、そこにある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 で入手できます。
バックアップから復元するときにこの問題がありました。問題は、my.iniで少し異なる設定があったことです。したがって、誰かがこの問題を受け取った場合は、必ず同じ設定(my.iniをコピー)を設定し、MySQLサービスを停止してから、データフォルダー全体を復元してから、MySQLサービスを再度開始してください。