web-dev-qa-db-ja.com

MyISAMからXtraDBへの移行

XtraDBへの移行についてどこにも見つからない質問がいくつかあります。

私のグループは本番環境でMyISAMデータベースを使用しており、PerconaのXtraDBに移行するのはどれほど難しいのか、どのように移行するのか疑問に思っていました。

最初にMyISAMをInnoDBに移行する必要がありますか、それともXtraDBに直接移行できますか?

XtraDBパッケージを使用してPerconaServerをFedoraマシンにインストールしましたが、ドキュメントはその使用方法についてあまり役に立たないため、Perconaは標準のMySQLインストールに便乗しているだけなのか、それとも別のエンティティなのか疑問に思いました。

私の質問を解決する方法に関するドキュメントへのリンクは素晴らしいでしょう。

4
Aaron Nguyen

前または後のいずれかに変換できます。 Percona Serverがインストールされ、稼働するとデータの準備が整うので、以前の方が好きです。これは、助成金テーブルに関して対処しなければならない厄介なことがいくつかあるためです。 (MySQL 5.0のmysql.userテーブルには37列、MySQL 5.5のmysql.userテーブルには42列があるため、これには特にmysql.userテーブルが含まれます)最初に接続やSQLGrantsの問題を台無しにしたくありません。

InnoDB変換を実行するスクリプトは次のとおりです。

ステップ01)これらのコマンドを実行します

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

スクリプトは、すべてのデータベースですべてのテーブルを検索し、サイズの小さいものから順に変換できます。

ステップ02)スクリプトを実行します

mysql ${MYSQL_CONN} -A < /root/ConvertMyISAMToInnoDB.sql

ステップ03)このクエリを実行します

SELECT SUM(data_length+index_length)/POWER(1024,2) RecommendedInnoDBBufferPoolSize
FROM information_schema.tables WHERE engine='InnoDB';

これにより、innodb_buffer_pool_sizeの推奨(理想的で完璧な世界)の値が得られます。この数がサーバーRAMの75%を超える場合は、RAMの75%を使用します。

ステップ04)service mysql stop

ステップ05)rm -f /var/lib/mysql/ib_logfile* /var/lib/mysql/ibdata1

ステップ06)以下を/etc/my.cnfに追加します

[mysqld]
innodb_file_per_table
innodb_buffer_pool_size=<SizeFromStep03>M
innodb_log_file_size=512M
innodb_log_buffer_size=64M
innodb_open_files=4096
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=5000
key_buffer_size=8M

警告

  • innodb_log_file_sizeはinnodb_buffer_pool_sizeの25%である必要があります
  • key_buffer_sizeを縮小できるようになりました

ステップ07)service mysql start

Mysqldが作成するため、これにはしばらく(2〜4分)かかります

  • ib_logfile0
  • それをフォーマットする
  • ib_logfile1を作成します
  • それをフォーマットします。

ステップ08)Perconaアップグレードを実行する

5
RolandoMySQLDBA

XtraDBは、InnoDBのドロップイン代替品です。既存のMyISAMテーブルは影響を受けません。 XtraDBから実際に利益を得るには、それらをInnoDBに変換する必要があります。これは、XtraDBをインストールする前または後に行うことができます。

2
Michael Hampton