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

推薦する

Dockerを使用してLaravel開発環境を構築するための完全な手順

序文この記事では、Docker を使用して、ローカル コンピューターにインストールされている開発スイ...

mysql8.0.11 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと...

Linux でファイルの作成時間を取得する方法と実践的なチュートリアル

背景ファイルの作成時刻を取得する必要がある場合があります。例えば: 「xtrabackup スキーマ...

Dockerプライベート倉庫の構築と利用の詳細説明

イメージは hub.docker.com に保存できますが、ネットワーク速度が比較的遅いです。内部環...

Html/Css (初心者が最初に読むべきガイド)

1. Web標準の意味を理解する - なぜWeb標準を採用するのか***** コンテンツとスタイル...

XHTML 入門チュートリアル: XHTML タグ

XHTML タグの紹介<br />おそらく、前のセクションで、XHTML ファイルと通常...

MySQL 8.0 で列を素早く追加する方法

序文: MySQL 8.0 では高速な列追加がサポートされ、数秒で大きなテーブルにフィールドを追加で...

Linux サーバーに Java Web プロジェクトをデプロイするための完全なチュートリアル

この記事は主にインターネット上の他のチュートリアルを参考にしています。実際に操作した上でのまとめです...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

HTML における水平および垂直の中央揃え方法の詳細な説明 (基礎)

序文馬を書いていたとき、水平方向と垂直方向の中央揃えの方法について、誰もあまり知らなかったと思います...

SQLのさまざまな結合サマリーの詳細な説明

SQL 左結合、右結合、内部結合、自然結合 さまざまな結合の概要SQL には、左結合、右結合、内部結...

MySQL 起動時に報告される ERROR:2002 の分析と解決方法

序文この記事は主にMySQL起動エラー2002の分析と解決方法を紹介しています。参考と勉強のために共...

HTML テーブル マウス ドラッグ ソート機能

効果画像: 1. ファイルをインポートする<script src="js/jquer...

Promiseの紹介と基本的な使い方の簡単な分析

Promise は、ES6 で導入された非同期プログラミングのための新しいソリューションです。 Pr...

Centos7でのMySQLインストールチュートリアル

MySQLインストールチュートリアル、参考までに具体的な内容は次のとおりです。 1. ダウンロードY...