Migrating the Database
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

データベースをPostgreSQLに移行する

Liferay DXP 2026.Q3+

Liferay DXPデータベースをPostgreSQLに移行するには、2つの段階があります。 まず、サーバー管理画面またはREST APIからデータベーススキーマをSQLファイルにエクスポートします。 次に、 データベース移行インポーターツール (db_migration_importer.sh) を実行して、スキーマとそのデータを空の PostgreSQL データベースにコピーします。 サポートされているソースデータベースは、DB2、MariaDB、MySQL、Oracle、およびSQL Serverです。 PostgreSQLのみがサポート対象です。 インポートを行うには、Liferay DXPをシャットダウンする必要があります。 ダウンタイムは、そのシャットダウンから始まり、PostgreSQLを再起動した後に終了します。

2026.Q3 より前のリリースについては、 PostgreSQL 移行ナレッジベース記事 を参照してください。

データベーススキーマのエクスポート

スキーマをエクスポートするには、システム管理者(omniadmin)アカウントと、ソースデータベース上で実行されているLiferay DXPインスタンスが必要です。

  1. コントロール パネル → システム → サーバー管理 に移動します。

  2. データベース移行 タブをクリックします。

  3. 以下の項目を入力してください。

    エクスポートファイルのパス: サーバー上の書き込み可能なディレクトリのパスを入力してください。 Liferay DXPはSQLファイルとレポートをそこに書き込みます。 この項目は必須です。

    テキスト認証: CAPTCHA チャレンジを完了してください。 デフォルトでは、このフィールドはセッション内で最初の認証に成功すると非表示になります。

    データベース移行タブには、「エクスポートファイルパス」フィールド、テキスト検証フィールド付きのCAPTCHA画像、および「エクスポート」ボタンがあります。

  4. をクリックしてエクスポート を実行します。

結果はタブの上部にメッセージとして表示されます。

条件メッセージ
輸出は成功しましたデータベーススキーマは[パス]に正常にエクスポートされました。
エクスポートパスは書き込み不可ですデータベーススキーマをエクスポートできませんでした。 エクスポート先のパスが書き込み可能であることを確認してください。
テキスト認証の入力が間違っていますテキスト認証に失敗しました。
CAPTCHAエンジンの設定が間違っていますCAPTCHAエラーが発生しました。 管理者にご連絡ください。

エクスポートされたデータは、ワークステーションではなく、Liferay DXPサーバーのファイルシステムに書き込まれます。 成功メッセージに指定されたディレクトリに tables.sql、 indexes.sql、および db_migration_schema_export_report.txt が存在することを確認してください。 まだ存在しないディレクトリは拒否されるのではなく作成されるため、入力ミスのあるパスでも新しいディレクトリが作成されます。

REST API を使用したスキーマのエクスポート

UI ではなくスクリプトからスキーマをエクスポートするには、リクエストボディにエクスポートパスを指定して POST /o/admin-server/v1.0/database-schema-export を呼び出します。 exportFilesPath は Liferay DXP サーバー上のディレクトリです。 発信者はシステム管理者でなければなりません。 UIとは異なり、REST APIにはテキスト認証の仕組みはありません。 test@liferay.com:test を、ご自身の管理者認証情報に置き換えてください。 本番環境では、デフォルトの認証情報を決して使用しないでください。

curl -X POST 'http://localhost:8080/o/admin-server/v1.0/database-schema-export' \
  -H 'Content-Type: application/json' \
  -u 'test@liferay.com:test' \
  -d '{
        "exportFilesPath": "/directory/"
}'

呼び出しが成功すると、エクスポートパス、書き込まれたファイル名、およびレポートファイル名を含む 200 が返されます。

{
   "exportFilesPath": "/directory",
   "fileNames": [
      "indexes.sql",
      "tables.sql"
   ],
   "reportFileName": "db_migration_schema_export_report.txt"
}

レスポンス内の exportFilesPath は、ファイルが書き込まれた場所を示していますが、送信したパスと一致しない場合があります。

ステータスコード原因
400空白 exportFilesPath 値、またはサーバーが書き込みできないパス
403システム管理者権限を持たない呼び出し元

OpenAPI 仕様全体を参照し、リクエストを対話的に実行するには、API Explorer を http://[host]:[port]/o/api で開きます。

エクスポートされたファイルの確認

エクスポートでは、テーブル定義を tables.sqlに、インデックス定義を indexes.sqlに、レポートを db_migration_schema_export_report.txt に書き込みます。 これらのファイルにはスキーマ定義のみが含まれています。 インポーターは実行時にソースデータベースからテーブルデータを読み込むため、エクスポートからシャットダウンまでの間に行われた書き込みも含まれます。

データベースパーティショニング が有効になっている場合、デフォルト インスタンスは tables.sql と indexes.sql というプレーンな名前を保持し、デフォルト以外のすべてのインスタンスは、会社 ID をプレフィックスとして付けた独自のファイル ペア [companyId]_tables.sql と [companyId]_indexes.sql を取得します。

db_migration_schema_export_report.txt エクスポートで書き込まれなかったテーブルの一覧 tables.sql. これらのテーブルとそのデータは、移行後、PostgreSQLから削除されています。 テーブルを保持するには、まず元のファイルをコピーし、次にその定義を tables.sql に、そのインデックスを indexes.sqlに追加し、ソーステーブルの列と一致させます。

警告

エクスポートされたSQLファイルを手動で編集すると、インポートが失敗したり、不完全なインポートが発生したりするリスクがあります。 これらのファイルは、ソースデータベースの構文ではなく、PostgreSQLの構文を使用しています。

PostgreSQLへのインポート

インポーターツールは、パスにJavaランタイムが設定されている必要があり、LinuxまたはmacOSが必要です。 Liferay DXP には、 [Liferay Home]/tools/portal-tools-db-migration-importer に含まれています ( Liferay Home を参照してください)。 ソースデータベースとターゲットPostgreSQLデータベースの両方にアクセスできるホストから実行してください。 --source-user アカウントは、ソース データベースのすべてのパーティションへの読み取りアクセス権を持っている必要があります。

  1. 空のPostgreSQLデータベースを作成します。 対象ユーザーは、スキーマとテーブルを作成できる必要があります。

  2. DB2、Oracle、またはSQL Serverソースの場合は、ソースデータベースベンダーのJDBCドライバを [Liferay Home]/tools/portal-tools-db-migration-importer/libにコピーします。 このツールには、MariaDB、MySQL、PostgreSQLのドライバが含まれています。

  3. 前回のエクスポート以降にスキーマが変更された場合(パッチ適用後、モジュールのデプロイ後、または新しい仮想インスタンスの作成後など)、スキーマを再度エクスポートしてください。 Liferay DXPは引き続き稼働している必要があります。

  4. エクスポートしたSQLファイルがインポーターを実行しているホストにまだ存在しない場合は、コピーしてください。

  5. ソースデータベースに接続されているすべてのLiferay DXPノードをシャットダウンしてください。 インポーターがデータベースから読み取っている間は、何もデータベースに書き込むことはできません。

  6. [Liferay Home]/tools/portal-tools-db-migration-importerから、エクスポートされた SQL ファイルのパスとソースおよびターゲットの接続設定を指定して、 db_migration_importer.sh を実行します。

    ./db_migration_importer.sh \
      --path "/directory/" \
      --source-jdbc-url "jdbc:mysql://localhost:3306/schema" \
      --source-user "xyz123" \
      --source-password "xyz123" \
      --target-jdbc-url "jdbc:postgresql://localhost:5432/schema" \
      --target-user "xyz321" \
      --target-password "xyz321"
    

    エクスポートされたファイルはすべて --path ディレクトリに保存してください。1 回の実行ですべてのインスタンスがインポートされます。 tables.sql または indexes.sql が存在しない場合、ツールはターゲット データベースに何も書き込む前に停止します。 パスワードは履歴とプロセス一覧に表示されるため、制限付きアカウントからコマンドを実行するか、実行後にシェル履歴を削除してください。

  7. インポートが成功したことを確認してください。 db_migration_import_report.txt を --path ディレクトリで開き、ソースとターゲットのテーブルとビューのカウントが一致していることを確認します。 欠落しているターゲット テーブル および 欠落しているターゲット ビュー のリストは空である必要があります。 データベースのパーティショニングが有効になっている場合、レポートは各パーティションごとにこれらの行を繰り返します。

    重要

    終了コード 0 は、例外なく実行が完了したことを意味し、すべてのテーブルがコピーされたことを意味するものではありません。

  8. PostgreSQLデータベースをバックアップしてください。 このバックアップは、最初の起動が失敗した場合の復元ポイントとなります。

  9. 各ノードで、Liferay DXPをPostgreSQLデータベースに接続するように設定します。 利用可能な JDBC 設定方法については、 データ ソースの設定 を参照してください。 お使いのインストール環境でJNDIデータソースを使用している場合は、そのリソースを更新してください。

    ソースデータベースに対して、次のようなオーバーライドファイル内で設定されている `hibernate.dialect`、`custom.sql.function.isnull`、または`custom.sql.function.isnotnull` のオーバーライドをすべて削除してください。 portal-ext.propertiesなどのオーバーライドファイル、またはLIFERAY_*環境変数として設定されている、ソースデータベースに対する `hibernate.dialect`、`custom.sql.function.isnull`、`custom.sql.function.isnotnull` のオーバーライドをすべて削除してください。 Liferay DXPはJDBC接続からデータベースを検出し、方言とこれらのSQL関数を自動的に設定します。

  10. Liferay DXPを起動します。

  11. 管理者としてログインし、サイトとコンテンツが存在すること、および起動ログにデータベースエラーがないことを確認してください。

スクリプトからインポーターを実行する場合は、レポートだけでなく終了コードも確認してください。 ツールは、成功した場合は 0 、インポートが失敗した場合は 1 、使用方法メッセージを表示するたびに 2 で終了します。 Exit 2 は --help、オプションの欠落または無効、およびサポートされていないソースまたはターゲット データベースをカバーします。 インポートが失敗するとスタックトレースが標準エラーに書き込まれ、成功すると db_migration_import_report.txt が書き込まれます。

輸入業者オプション

db_migration_importer.sh では、以下のオプションが利用可能です。

オプション必須説明
--path <arg>はいソースSQLファイルのパス
--source-jdbc-url <arg>はいソースデータベースのJDBC URL
--source-user <arg>はいソースデータベースのユーザー名
--source-password <arg>はいソースデータベースユーザーのパスワード
--target-jdbc-url <arg>はい対象のPostgreSQLデータベースのJDBC URL
--target-user <arg>はい対象のPostgreSQLデータベースのユーザー名
--target-password <arg>はい対象のPostgreSQLデータベースユーザーのパスワード
--jdbc-batch-size <arg>いいえJDBCバッチサイズ(デフォルト 2500)
--jdbc-fetch-size <arg>いいえJDBC結果セットのフェッチサイズ(デフォルト 2500)
- ヘルプいいえ使用方法メッセージ。最初の引数としてのみ認識されます。

完全なコマンドに --help を追加すると、使用方法メッセージを表示する代わりにインポートが実行されます。