MySQL または MariaDB DBMS で、共有テーブルスペースからテーブルごとのファイルテーブルスペースへデータを移動する

すべて表示 | すべて非表示

MySQL および MariaDB DBMS の場合、次の方法でデータを保存できます:

共有テーブルスペースを使用すると、テーブルスペースの断片化のリスクが高まります。SHRINK 操作を実行できないため、共有テーブルスペース内のファイルがディスク領域の約 90% を占める可能性があります。これにより、ディスクサブシステムのパフォーマンスに悪影響が生じます。したがって、ファイルごとのテーブルスペースを選択すると便利です。

この記事では、共有テーブルスペースからファイルごとのテーブルスペースにデータを移動する方法について説明します。MySQL または MariaDB DBMS が他のアプリケーションでも使用されている場合は、これらのアプリケーションのデータベースをファイルごとのテーブルスペースに移動する必要があります。

管理サーバーに MySQL または MariaDB DBMS を使用している場合のみ、この手順を実行することを推奨します。
共有テーブルスペースからファイル単位テーブルスペースへのデータ移行は、ディスクサブシステムへの負荷を増加させる可能性があります。

必須条件

始める前に、次の点を確認してください:

必要なディスク容量は、現在の定義データベースの合計サイズ(ibdata1 ファイルの現在のサイズ)の 150% です。

プロセス

共有テーブルスペースからファイルごとの表領域にデータを移動するには:

  1. この手順を実行する対象の DBMS インスタンスを使用している Kaspersky Security Center 管理サーバーサービスおよびその他のアプリケーションを停止します。
  2. DBMS のバージョンに応じて、スーパーユーザーとして DBMS にログインし、任意のアプリケーションでスクリプト fix_tablespace.sql を実行します。

    このリンクをクリックすると、スクリプト fix_tablespace.sql を表示できます:

    MySQL 5.7 および MariaDB 10.1+ のスクリプトを表示

    MySQL 8.0+ のスクリプトを表示

    スクリプトの実行を停止しないでください。
    DBMS エラーが発生していない状態でスクリプトの実行を終了した場合は、スクリプトを再度実行するか、この手順の実行を中止して DBMS サービスを再起動した後、バックアップから管理サーバーのデータを復元してください。

  3. my.cnf ファイルの[[mysqld]]セクションで、innodb_file_per_table パラメータを 1 に設定してください。
  4. MySQL または MariaDB サービスを再起動します。
  5. Kaspersky Security Center 管理サーバーサービスを開始します。

データは共有テーブルスペースからファイルごとのテーブルスペースに移動されます。

ページのトップに戻る