MySQLのinnodb_data_file_pathパラメータを変更する際の注意事項

MySQLのinnodb_data_file_pathパラメータを変更する際の注意事項

序文

innodb_data_file_path は、innodb テーブルスペース ファイルを指定するために使用されます。My.cnf ファイルで innodb_data_home_dir と innodb_data_file_path を指定しない場合は、デフォルトで ibdata1 が datadir ディレクトリに innodb テーブルスペースとして作成されます。

例示する

テスト環境では、あまり詳細なパラメータを設定せずにサービスを初期化して起動しました。その後の最適化プロセスで、innodb_data_file_path が小さすぎることが判明しました。

root@node1 14:59: [(なし)]> '%innodb_data_file_path%' のような変数を表示します。
+----------------------+------------------------+
| 変数名 | 値 |
+----------------------+------------------------+
| innodb_data_file_path | ibdata1:12M:自動拡張 |
+----------------------+------------------------+
セット内の 1 行 (0.00 秒)

root@node1 14:59: [(なし)]>

innodb_data_file_pathが設定されていない場合、デフォルトのinnodb_data_file_path = ibdata1:12M:autoextend

[mysqld]
innodb_data_file_path = ibdata1:12M:自動拡張

1G に変更する必要がある場合、構成ファイルで ibdata1 を 1G に直接変更することはできません。

[mysqld]
innodb_data_file_path = ibdata1:1G:自動拡張

そうでない場合、サービスを開始した後、エラー ログに次のエラーが表示されます。

2019-03-29T06:47:32.044316Z 0 [エラー] InnoDB: 自動拡張 innodb_system データ ファイル './ibdata1' のサイズが、.cnf ファイルで指定されたサイズ (初期 65536 ページ、最大 0 ページ (ゼロ以外の場合は関連)) と異なる 768 ページ (MB に切り捨て) です。

一般的な意味は、ibdata1のサイズは65536page*16KB/1024KB=1Gではなく、 786page*16KB/1024KB=12Mあるということです。
(圧縮ページは使用されません)

方法1: 推奨

代わりに、次のように別の ibdata2:1G を追加します。

[mysqld]
innodb_data_file_path = ibdata1:12M;ibdata2:1G:自動拡張

データベースを再起動してください。

方法2: 推奨されません

以下のように直接変更

[mysqld]
innodb_data_file_path = ibdata1:1G:自動拡張

$mysql_datadir ディレクトリ内の ibdata1、ib_logfile0、および ib_logfile1 ファイルを削除できます。

rm -f ibdata* ib_logfile*

MySQL を起動することもできますが、MySQL エラー ログに次のエラーが報告されます。

2019-03-29T07:10:47.844560Z 0 [警告] max_open_files の数を 5000 以上に増やすことができませんでした (リクエスト: 65535)
2019-03-29T07:10:47.844686Z 0 [警告] 制限が変更されました: table_open_cache: 1983 (要求 2000)
2019-03-29T07:10:48.028262Z 0 [警告] 'NO_AUTO_CREATE_USER' SQL モードが設定されていません。
2019-03-29T07:10:48.147653Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/plugin を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
mysqld: テーブル 'mysql.plugin' が存在しません
2019-03-29T07:10:48.147775Z 0 [エラー] mysql.plugin テーブルを開けません。mysql_upgrade を実行して作成してください。
2019-03-29T07:10:48.163444Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/gtid_executed を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
mysqld: テーブル 'mysql.gtid_executed' が存在しません
2019-03-29T07:10:48.163502Z 0 [警告] Gtid テーブルは使用準備ができていません。テーブル 'mysql.gtid_executed' を開くことができません。
2019-03-29T07:10:48.163658Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/gtid_executed を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
mysqld: テーブル 'mysql.gtid_executed' が存在しません
2019-03-29T07:10:48.163711Z 0 [警告] Gtid テーブルは使用準備ができていません。テーブル 'mysql.gtid_executed' を開くことができません。
2019-03-29T07:10:48.164619Z 0 [警告] 次の SSL ライブラリ エラーのため、SSL の設定に失敗しました: 証明書と秘密鍵がないと SSL コンテキストは使用できません
2019-03-29T07:10:48.166805Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/server_cost を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.166891Z 0 [警告] オプティマイザコスト定数テーブルを開けませんでした

2019-03-29T07:10:48.168072Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/time_zone_leap_second を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.168165Z 0 [警告] タイムゾーンテーブルを開いてロックできません: テーブル 'mysql.time_zone_leap_second' は存在しません。
2019-03-29T07:10:48.169454Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/servers を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.169527Z 0 [エラー] 権限テーブルを開いてロックできません: テーブル 'mysql.servers' が存在しません
2019-03-29T07:10:48.170042Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/slave_master_info を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.170617Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/slave_relay_log_info を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.170946Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/slave_master_info を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.171046Z 0 [警告] 情報テーブルを使用する準備ができていません。テーブル 'mysql.slave_master_info' を開くことができません。
2019-03-29T07:10:48.171272Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/slave_worker_info を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.171626Z 0 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル mysql/slave_relay_log_info を開くことができません。 問題を解決する方法については、http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html を参照してください。
2019-03-29T07:10:48.171688Z 0 [警告] 情報テーブルを使用する準備ができていません。テーブル 'mysql.slave_relay_log_info' を開くことができません。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL btree インデックスとハッシュ インデックスの違い
  • MySQL InnoDBとMyISAMの違いを簡単に理解する
  • MySQL InnoDBストレージエンジンについて簡単に説明します
  • MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明
  • MySQL 起動エラー InnoDB: ロックできません/ibdata1 エラー
  • MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明
  • MySQL エンジンを変更する方法 (InnoDB、MyISAM)
  • MySQLのパフォーマンスを向上させるInnoDB構成パラメータ
  • MySQL エラー: type=InnoDB ソリューションの近くで使用する正しい構文の MySQL サーバー バージョン
  • MySQL データベース InnoDB の起動失敗と再起動不能の解決策
  • MySQL innodb B+ツリーの高さを取得する方法

<<:  Vue命令の動作原理と実装方法

>>:  Centos での TCPWrappers アクセス制御の実装

推薦する

角丸四角形の HTML+CSS 実装コード

退屈していたので、突然角丸四角形の実装を思いつきました。しかし、私たちはこの話題についてあまりにも長...

Vue要素ツリーコントロールに点線を追加する詳細な説明

目次1. 成果を達成する2. 実装コード3. その他の実装要約する1. 成果を達成する 2. 実装コ...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

見栄えの良い CSS カスタム スタイル (タイトル h1 h2 h3)

レンダリングBlog Gardenでよく使われるスタイル /*タイトル h1 h2 h3 スタイル*...

VUE ユニアプリライフサイクルに関する簡単な説明

目次1. アプリケーションライフサイクル2. ページのライフサイクルコンポーネントライフサイクル要約...

画像ボタンをフォームのリセットボタンとして使用する方法

フォームを作成するときに、送信ボタンとリセットボタンを配置することがよくあります。ページの外観を考慮...

Vue+Openlayerはmodifyを使用して要素の完全なコードを変更します

Vue+Openlayerはmodifyを使って要素を変更します。具体的な内容は以下のとおりです。 ...

Xmeter APIインターフェーステストツールの使用状況の分析

XMeter API は、以下のサービスを含む、JMeter に基づくワンストップのオンライン イン...

Linux deb パッケージの解凍、変更、その他の操作方法のコード例

さまざまな理由により、debパッケージ内のさまざまなファイルの内容を直接変更する必要がある場合があり...

MySQL データベースの最適化: テーブルとデータベースのシャーディング操作の詳細な説明

この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...

CSS 3D からソースコードによる空間座標軸へ

かつて、サイコロを振るゲームについて話しました。その時は、steps 属性 + スプライト画像を使用...

CSS3で実装されたグラデーションスライド効果

成果を達成する コードhtml <div class="css-slideshow&...

MySQLイベント計画タスクに関する簡単な説明

1. イベントが有効になっているかどうかを確認する'%sche%' のような変数を表...

IE10以下のimgタグ問題の解決方法

問題を見つける以前、簡単なデモを書いたのですが、IE10以下では動作しないことがわかりました。ここに...

JavaScript Three.js でテキストを作成する最初の経験

目次効果テキストの作成を開始するまずフォントローダーを作成するフォントライブラリを読み込むテキストジ...