データベースの移行
サポート、メンテナンス、またはパフォーマンス上の理由から、現在使用しているデータベースから、Liferayがサポートする他のデータベースに移行することを決定する場合があります。 Liferay DXPは、PostgreSQLへの移行をサポートするツールを提供しています。 その他の対象については、具体的な手順やツールはドキュメントの範囲外ですが、データベースを移行する際に避けるべき落とし穴がいくつかあります。
Liferay は サービス ビルダーを介してデータベースにアクセスします。このサービス ビルダーは、Liferay のデータ型をサポートされているデータベースの最も適切な列型にマッピングします。 データベースを移行する際、スキーマ定義やデータを移行するために様々なサードパーティ製ツールが使用されることが多いのですが、そこに落とし穴があります。これらのツールはLiferayのデータマッピングについて何も知らないのです。 移行作業を行う際に、列の型や命名規則を誤って選択する可能性が非常に高い。
例えば、Liferayはデータベースごとに異なる型を想定しています。
| Liferayタイプ | DB2 | MySQL | オラクル | PostgreSQL | SQL Server |
|---|---|---|---|---|---|
| ブール値 | スモールイント | 小さな整数 | 数値(1, 0) | ブール値 | 少し |
| 長さ | ビギント | ビギント | 数値(30,0) | ビギント | ビギント |
| 文章 | クロブ(2G) | 長文 | クロブ | 文章 | nvarchar(max) |
| バリアクル | varchar | varchar | varchar2 | varchar | nvarchar |
さらに、Liferayのテーブル名と列名の命名規則はデータベースごとに異なります。
PostgreSQL: 小文字 → レイアウトセット および ヘッドID
OracleとDB2: 大文字 → LAYOUTSET と HEADID
SQL Server: 変更なし → LayoutSet および headId
MySQL: データベース環境とその lower_case_table_names 設定に依存します
サードパーティ製のツールを使用してサポート対象外のデータベースに移行する場合、次の3つの問題が発生する可能性があります。
-
列が間違ったデータ型にマッピングされている可能性があります(Oracle では
varcharがvarchar2の代わりに、PostgreSQL ではboolの代わりに数値型になっているなど)。 -
テーブル名や列名が、誤った命名規則を使用して作成されている可能性があります。
-
インデックス名が失われる可能性があり、その場合、インデックス名を再作成する必要が生じた際にパフォーマンスの問題が発生します。
こうした理由から、サードパーティ製の移行ツールはデータ移行にのみ推奨され、スキーマ移行には推奨されません。
PostgreSQLへの移行
LiferayのデフォルトデータベースはPostgreSQLです。 Liferay DXPには、DB2、MariaDB、MySQL、Oracle、またはSQL ServerデータベースをPostgreSQLに移行するためのサポートツールが含まれています。 手順の詳細については、 データベースを PostgreSQL に移行する を参照してください。
サポートされている任意のデータベースへの移行
Liferayにスキーマを作成させてからデータを移行させることで、サポートされている任意のデータベースに移行できます。
-
Liferay 用の新しいデータベース を設定します。
-
Liferay を起動し 、前の手順で設定した新しいデータベースを指定します。 Liferayはデータベース内にスキーマを作成します。
-
Liferayを停止してください。 データベースに接続し、SQL を使用してデータベース内のすべてのテーブルのデータを削除します (つまり、
TRUNCATE TABLE [Table];またはDELETE FROM [Table];を使用します)。 これで、新しいデータベースに空のLiferayスキーマが作成されました。 -
古いデータベースから新しいデータベースへデータを移行し、古いデータベースの既存のテーブル名と列名を新しいデータベースにマッピングします。
アップグレードする場合
Liferayのアップグレードと同時にデータベースを移行する場合は、まず古いバージョンのLiferay上でデータベースを移行してください。 アップグレードを試みる前に、新しいデータベース上でLiferayが期待どおりに動作することを確認してください。