すべてのテーブルをMyISAMとして実行しているMySQL 5.0サーバーがあります。先月、MySQL 5.5にアップグレードした2つのスレーブがあります。彼らのテーブルもMyISAMのままです。
私の最初の計画は、5.0マスターを5.5にアップグレードしてから、InnoDBに変換することでした。今、私は疑問に思っています、アップグレードの前に開始する方が理にかなっていますか? 5.5でのInnoDBは5.0でのInnoDBよりもはるかに高速であると聞いたので、私は警戒してきました。これは根拠がないのですか、今すぐ始めますか?
重いUPDATEとINSERTの同時実行性が必要な場合は、InnoDBが必要です。
デッドロックの解決が必要な場合は、InnoDBが必要です。
データとインデックスの両方をキャッシュするストレージエンジンが必要な場合は、InnoDBが必要です。
複数のCPUに効率的にアクセスしたい場合は、InnoDBが必要です( そしてそれを調整する )。
InnoDBに関する過去の記事を参照してください。
Feb 12, 2011
: 重いInnoDBワークロードに合わせてMySQLをどのように調整しますか?Apr 14, 2011
: InnoDBとMyISAMの主な違いは何ですか?Aug 04, 2011
: InnoDBデフォルト設定の最適化Oct 05, 2011
: 一部の新しいMySQLバージョンではクエリが長時間実行されますDec 19, 2011
: 最初に:mysqlバージョンをアップグレードするか、ストレージエンジンを変換しますか?Jan 09, 2012
: MyISAMからInnoDBへの変換に関して何か問題はありますか?Jan 27, 2012
: myisam 5.0データベースを5.5 innodbサーバーにインポートJan 18, 2012
: Insert-heavy InnoDBテーブルがすべてのCPUを使用するわけではありませんJan 21, 2012
: InnoDBエンジンはメモリエンジンに対して高速ですか?Jul 16, 2012
: mysqlサーバー5.0から5.5に移行すると、ストアドプロシージャのパフォーマンスが低下しますあなたは、MySQL 5.5がMySQL 5.0より速いと聞いたそうです。箱から出して、それは本当ではありません。 優れたパフォーマンスを発揮させるには、MySQL 5.5をチューニングする必要があります!!!以下は、この件に関する過去の記事です。
Jun 19, 2011
: MySQLベイクオフを適切に実行するにはどうすればよいですか?Nov 24, 2011
: mysql 5.5が5.1より遅い理由(linux、mysqlslapを使用)Jul 18, 2012
: mysqlサーバー5.0から5.5に移行すると、ストアドプロシージャのパフォーマンスが低下しますMyISAMはInnoDBよりも高速だとおっしゃっていましたね。 MyISAMにデフォルトのROW_FORMAT = Dynamic(デフォルト)のワイドVARCHAR列が多数ある場合、MyISAMのパフォーマンスが低下する可能性があります。 1つのストレージエンジンが他のストレージエンジンよりも高速であると言うのは、アプリケーション、読み取り/書き込みI/O比、ストレージエンジンのチューニングによって異なります。
この主題に関する私の投稿を参照してください
Sep 20, 2011
: MyISAMとInnoDBのベストApril 12, 2012
: Mysql:Insert performance INNODB vs MYISAM (私の投稿ではありませんが、良い答えが得られます)May 02, 2012
: どのmysqlストレージエンジンを選択するか?May 03, 2012
: InnoDBまたはMyISAMのどちらが高速ですか?今すぐ変換するか後でInnoDBに変換するかという問題に対処します。
私が提供した5番目のリンク( 最初に:mysqlバージョンをアップグレードするか、ストレージエンジンを変換するか? )では、最初に変換することをお勧めします。ただし、特定のケースでは、後で変換することをお勧めします。理由は簡単です。データを別のサーバーに移動しています。 MyISAMテーブルは移植が非常に簡単です。/var/lib/mysqlのrsyncまたはscpを実行することは、InnoDBとして存在する場合にデータがわずかに(場合によっては大幅に)大きくなるため、InnoDBへの変換よりも便利(高速)です。
次の2つのことを行う必要があります。
Rysnc/scp /var/lib/mysql
/var/lib/mysql/mysqlを上書きします。したがって、次のようにデータを移動することをお勧めします。
mkdir /root/mysql_schema
cp /var/lib/mysql/mysql/* /root/mysql_schema/.
/var/lib/mysql
MySQL 5.0サーバーからMySQL 5.5サーバーへcp /root/mysql_schema/* /var/lib/mysql/mysql/.
STEP05)MySQL 5.0マシンから純粋なSQLとして権限を取得し、ファイルをMySQL50Grants.sqlとして保存します
Jul 26, 2011
: 古いバックアップを最新のMySQLリリースに復元 (警告を参照)
Jan 27, 2012
: myisam 5.0データベースを5.5 innodbサーバーにインポート
Jun 13, 2012
: データベースをあるサーバーから別のサーバーに移動する最速の方法
MyISAMをInnoDBに変換する簡単なスクリプトが必要です。 MySQL 5.5 DBサーバーで以下を実行してください:
echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
MYSQL_CONN="-u... -p..."
mysql ${MYSQL_CONN} -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql
less /root/ConvertMyISAMToInnoDB.sql
変換スクリプトに満足したら、MySQL 5.5のmysqlにログインして実行します。
mysql> source /root/ConvertMyISAMToInnoDB.sql
試してみる !!!