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 アクセス制御の実装

推薦する

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....

MySQLユーザー削除バグを解決する

著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに...

Javascript 文字列メソッドの詳細な説明

目次文字列の長さ: 長さcharAt() charCodeAt()文字列に値が含まれているかどうかを...

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...

MySQL データベースの操作とデータ型

目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...

Mongodb の GUID 表示の問題の詳細な分析

問題を見つける最近、プログラムのストレージを Mongodb に移行したところ、Guid 型が書き込...

アイデアコンパイラvueインデントエラー問題シナリオの分析

プロジェクトシナリオ: Vueプロジェクトを実行したらインデントエラーが出ました。ideaコンパイラ...

CSS3 境界効果

CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...

Node の SMS API で検証コード ログインを実装するためのサンプル コード

1. ノードサーバーのセットアップ + データベース接続ここでの操作は比較的簡単でわかりやすいです。...

Dockerイメージの作成Dockerfileとコミット操作

イメージを構築するイメージを構築するには、主に 2 つの方法があります。実行中のコンテナをイメージに...

新しい CSS :where および :is 疑似クラス関数とは何ですか?

:is と :where とは何ですか? :is()と:where()は、セレクターを作成するとき...

Vue.js プロジェクトの開始方法

目次1. Node.jsとVue 2. ローカル開発環境でフロントエンドのVueプロジェクトを実行す...

Vue のデータ応答性に関する詳細な理解

目次1. ES 構文のゲッターとセッター2. ES構文でのdefineProperty 3. Vue...